Flutter 상태 관리 ( State Management )

    상태 관리를 위해서 많은 사람들이 라이브러리를 사용합니다. 

    개인적으로는 Provider를 사용하고 있는데, GetX는 아직도 좀 꺼려집니다. 

    관련해서는 다른 포스팅으로 이야기 하겠습니다. 

     

    오늘 소개할 내용인 각 패키지의 순위 입니다. 

    1. GetX (aka Get)
    2. Provider
    3. Flutter BloC
    4. Riverpod
    5. Get It
    6. Mobx
    7. Recap

     

    1. GetX (aka Get)

    • GitHub stars: 5.7k+
    • Likes (on pub.dev): 7.6k+
    • Written in: Dart, C++, CMake
    • License: MIT
    • Links: GitHub repo | Pub
     

    get | Flutter Package

    Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX.

    pub.dev

    이 패키지는 높은 성능 상태관리,  똑똑한 의존성 주입 (Dependency Injection), Route 관리가 빠르고 실용적으로 결합돼 있습니다.

    다양한 기능을 제공하지만 이러한 각 기능은 별도의 컨테이너에 있으며 사용 후에만 시작됩니다.

    상태 관리만 사용할 경우 상태 관리만 컴파일됩니다.  Route의 사용과 상태관리는 별도로 컴파일 됩니다. 

    Getx는  성능과 최소 리소스를 사용하는 것에 집중합니다.

    Streams 또는 ChangeNotifier를 사용하지 않습니다. GetX에는 단순 상태 관리자(GetBuilder)와 Reactive 상태 관리자(GetX/Obx)의 두 가지 상태 관리자가 있습니다.

    • StreamController를 만들 필요가 없습니다.
    • 각 변수에 대해 StreamBuilder를 생성할 필요가 없습니다.
    • 각 주마다 클래스를 만들 필요가 없습니다.
    • 초기 값에 대한 get를 만들 필요가 없습니다.
    • 코드 생성기를 사용할 필요가 없습니다.

     

    2. Provider

    • GitHub stars: 4k+
    • Likes (on pub.dev): 5.8k+
    • Written in: Dart
    • License: MIT
    • Links: GitHub repo | Pub
     

    provider | Flutter Package

    A wrapper around InheritedWidget to make them easier to use and more reusable.

    pub.dev

     

    이 패키지는 오래전부터 널리 알려져 사용되고 있습니다.

    단순함과 깔끔함, 플룻 초보자의 학습 용이성으로 사랑받고 있으며, 다음과 같은 기능을 제공합니다. 

    • 단순화된 자원 할당/배정
    • Lazy-Loading
    • 개발 툴과 호환성
    • 상속된 위젯을 사용하는 일반적인 방법
    • 복잡도가 증가하는 구독 매커니즘의 확장성 향상

     

    3. Flutter BloC

    • GitHub stars: 8.3k+
    • Likes (on pub.dev): 3.3k+
    • Written in: Dart, TypeScript, Kotlin, CMake, C++
    • License: MIT
    • Links: GitHub repo | Pub
     

    flutter_bloc | Flutter Package

    Flutter Widgets that make it easy to implement the BLoC (Business Logic Component) design pattern. Built to be used with the bloc state management package.

    pub.dev

     

    BloC는 프리젠테이션과 비즈니스 로직을 구분하는 컴포넌트 설계 패턴을 쉽게 구현할 수 있도록 합니다.

    Cubit은 BlockBase를 확장하는 클래스이며 모든 유형의 상태를 관리할 수 있도록 확장할 수 있습니다.

    Cubit은 호출되기 전 초기 상태를 요구합니다. Cubit의 현재 상태는 Getter를 통해 액세스할 수 있으며 큐빗의 상태는 새로운 상태로 업데이트할 수 있습니다.

     

    4. Riverpod

    • GitHub stars: 2.3k+
    • Likes (on pub.dev): 1.3+
    • Written in: Dart, Javascript
    • Links: GitHub repo | Pub
     

    riverpod | Dart Package

    A simple way to access state from anywhere in your application while robust and testable.

    pub.dev

     

    5. Get It

    • GitHub stars: 830+
    • Likes (on pub.dev): 1.75k+
    • Written in: Dart
    • Links: GitHub repo | Pub
     

    get_it | Dart Package

    Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App"

    pub.dev

     

    6. Mobx

    • GitHub stars: 2.1k+
    • Likes (on pub.dev): 760+
    • Written in: Dart
    • License: MIT
    • Links: GitHub repo | Pub
     

    mobx | Dart Package

    MobX is a library for reactively managing the state of your applications. Use the power of observables, actions, and reactions to supercharge your Dart and Flutter apps.

    pub.dev

     

    https://www.kindacode.com/article/most-popular-packages-for-state-management-in-flutter/

    'Flutter(플러터) > Tip' 카테고리의 다른 글

    Flutter MVVM  (0) 2022.02.22
    Native? Reactive? Cross? Flutter?  (0) 2022.02.22
    Flutter Architecture (아키텍처)  (0) 2022.02.22
    Flutter Log  (0) 2022.01.14
    Flutter 자동 정렬 ( Auto-Indent Lines )  (0) 2022.01.11

    댓글