Flutter 상태관리 패키지

Chance·2022년 11월 28일

Provider = Future


Provider (MVP)

  • 전역으로 State를 관리하여 Build한다.
  • 직접 접근하는 경우 현 위젯 전체가 리로드 된다.
  • Consumer, Selector를 사용하면 해당 위젯의 builder만 호출된다.
  • Flutter가 추천하는 상태관리 패키지

Bloc = Stream


Bloc (MVVM)

  • View, Logic을 모두 따로 나눠서 작업한다.
  • UI(뷰)는 화면에 집중하고, BLoC 는 Logic 에 집중한다.

Bloc 종류

GetX

가장 많이 사용하는 상태관리 패키지

생산성
쉽고 간결한 구문
사용하지 않은 리소스는 메모리에서 자동으로 제거해준다.
조직화
화면, 로직, 등등을 완전히 분리할 수 있다.

단순 상태관리

  • 기존의 데이터와 변경되는 데이터가 같은지 확인하지 않는다.
  • 수동으로 상태를 업데이트(update())해줘야 한다.

반응형 상태관리

  • 데이터가 변화가 있을 때만 재 랜더링을 하게 된다.
  • Obs()를 설정하여 그 안에 있는 변수들만 listene한다.

RiverPod

Provider 패키지 개발자가 Provider의 단점을 보완하기 위해
만들어낸 패키지
Provider와 흡사한 사용방법을 가지고 있다.
(ChangeNotify, .read() , .watch())

  Riverpod으로 개선된 사항들 (공식홈)
  • Riverpod은 컴파일 타임 동안 안전하다.
  • Flutter SDK에 직접적으로 의존하지 않는다.
  • Riverpod는 위젯 트리에 직접적으로 의존하지 않습니다.
  • Provider는 전역적으로 선언되며 응용 프로그램의 모든 위치에서 사용할 수 있습니다.
  • Riverpod는 위젯을 통해 제공자에 액세스할 수 있도록 하며 ScopedReader, 빌드 메소드에 전달되고 최종적으로 ConsumerWidget클래스 를 통해 소비됩니다.
  • 상태 또는 UI Rebuild를 필요할 때만 한다.
  • Riverpod은 loading/error 케이스를 깔끔하게 다룰 수 있다.
  • devtool로 상태를 검사할 수 있다.

0개의 댓글