Flutter 상태관리

yezee·2024년 9월 7일
0

Flutter

목록 보기
14/15

상태관리는 UI와 데이터를 동기화 하는 과정
앱이 동작하면서 상태(사용자가 입력한값, API로 부터 받은 데이터, 화면의 스크롤 위치 등)이 변할 때 이를 관리하고 화면에 반영

Flutter에서 상태 관리방법들

setState

로컬상태를 업데이트 하는 가장 기본적인 방법
statefulWidget내에서 상태변화를 처리하고 상태가 변화되면 setState()로 다시 빌드

inheritedWidget

하위위젯들이 상위위젯의 상태에 접근할 수 있게 해준다

provider

inheritedWidget을 간소화 한 형태로 전역상태를 관리하거나, 특정 위젯에서 사용할 수 있게 한다
상태와 데이턱라 여러 위젯트리에 걸쳐 공유될 수 있도록 돕는 역할

provider의 주요특징
1. 의존성주입
특정 데이터나 객체를 트리 내의 하위 위젯들에 주입
2. 상태관리
상태변화시, provider는 이를 사용하는 모든 위젯들에게 변동사항을 알리고 ui를 업데이트
3.성능최적화
필요한 위젯들에만 상태변경을 알리기 때문에 모든 위젯들이 다시 빌드되지 않도록 최적화작업

provider 종류
1. changeNotifierProvider
changeNotifier를 기반으로 상태를 관리(상태가 변경되면 이를 구독하고 있는 위젯들에게 알림)
2. provider
간단하게 객체나 데이터를 전달할때 사용(상변화가 필요하지 않은 경우 적합)
3. FutureProvider
비동기작업의 결과를 제공한느데 사용(API요청이나 데이터베이스 조회작업을 처리)
4. SteamProvider
지속적으로 변화하는 데이터를 제공하는데 사용(실시간 스트림을 관리할때 유용)

예시코드 >

Provider<ITournamentContentManager>.value(
  value: someInstanceOfITournamentContentManager,
  child: SomeWidget(),
)



Provider 패키지의 기능을 사용하여, 특정 객체(ITournamentContentManager)를 트리 내에서 하위 위젯들에 주입할 때 사용됩니다.
value는 이미 인스턴트화된 객체를 provider를 통해 주입할 때 사용하는 방법
즉, 이미 생성된 someInstanceOfITournamentContentManager 객체를 `다시 생성하지 않고 그대로 사용`하겠다는 의미

riverpod

provider를 개선한 상태 관리 패캐지
상태관리가 복잡해지는 대규모 프로젝트에서 많이 사용

Bloc/Cubit

이벤트 기반 상태관리 패턴, 상태를 명확하게 정의하고 로직을 분리하는데 좋다

profile
아 그거 뭐였지?

0개의 댓글