2022. 4. 25. 13:17ㆍFlutter/Get X
어떤 상태관리가 좋은 관리인가?
하나의 UI를 구축하기 위해선 Build 라는 메서드를 호출하게 되고
Build 메서드 안에 어떠한 값(변수) 가 들어가게 되는데 이러한 값들을 핸들링하고 변조하고 변조한 값을 보여지는 과정을 상태관리라 한다.
1. SetState
- Flutter의 Tutorial / Project Starter(첫프로젝트생성 시) 의 '그 상태관리'
- 특정한 Widget 내에서 단기적으로 쓰이고 말 때 사용하면 편한 상태관리
2. BloC
- Stream을 Flutter 에서 사용해야한다면 선택해야할 라이브러리.
- 상태 관리 라이브러리 중 초창기에 나온 도구로, 특유의 BloC 패턴은 익혀두면 매우 큰 도움이 됨.
- BloC 상태관리를 선택하는데 있어 가장 큰 고민, Cubit / BloC
- Cubit
- 상태의 변경을 Function을 통해 관리
- 변경되고 그리고 바뀐 값을 가져올때,
emit / onChanged 등으로 개발자가 어느정도 시점을 특정할수 있음.
- 단순 UI를 핸들링 하는데에 상당히 효과적
class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);
void increment() => emit(state + 1);
void decrement() => emit(state - 1);
void reset() => emit(0);
}
- BLoC
- 상태의 변경을 Event를 통해 관리
- 여러 요인으로 인해 잦은 변경이 많은 관리, 주체에 대해 Event로 관리 되다보니 어느 변화던 추적하여 잡아낼 수 있음
- 로그인 유무 / 특정 Action에 대한 추적을 Stream으로 관리하기에 효과적
class CounterBloc extends Bloc<CounterEvent, int> {
CounterBloc() : super(0);
@override
Stream<int> mapEventToState(CounterEvent event) async* {
switch (event) {
case CounterEvent.decrement:
yield state - 1;
break;
case CounterEvent.increment:
yield state + 1;
break;
}
}
}
3. Provider
- Provider는 딱 상태관리 만을 위해 만들어진 라이브러리
- 기본적인 Flutter의 기본 SDK도 연계가 상당히 좋고, Flutter 공식 홈페이지에서도 상태관리의 기본 예시가 Provider로 기재되어 있다.
4. GetX
- 마치 Flutter안의 또 하나의 Framework
- GetX는 Flutter를 더욱 편하게 쓰기 위해 개조한 Flutter 같다.
- Flutter를 쓰면서 다소 귀찮아 질수 있는 BuildContext와 StatefulWidget의 State 객체의 존재를 지울 수도 있으며,
Navigator부터 Connection까지 제공한다.
- 인기도가 엄청 높다.
- GetX 라이브러리 전용 Rx객체(RxInt, RxString, RxList ...)부터. .obs / Obx(() => Widget)의 명령어를 통해 동적 화면관리,
코드 내에서 BuildContext 객체를 전혀 사용하지 않고, 모든 Widget을 StatelessWidget으로 활용 하는 것을 추천하며,
GetX 만의 .to / .toNamed / .off / .offAll 등 별도의 Navigator System, 심지어 별도의 http / websocket Connection Method
를 갖춘 거의 별도의 Framework를 만들어 둔 것과 같은 형태로 기존의 Flutter 개발과 결이 많이 다르다는 것을 느낄 수 있다.
5. 결론
- 다른 사람들이 좋다고 하는 라이브러리에 맹신하기 보다는, 이 라이브러리를 선택한 이유는 본인에게 있어야한다.
- 유사 라이브러리가 있다면 비교해 보고 사용하고, 기능을 정확히 파악하고 적재적소에 사용해야한다고 생각한다.
- 간단한 상태관리를 활용한 Count App
- https://github.com/curogom/flutter_state_management
GitHub - curogom/flutter_state_management: Flutter Festival Songdo example Project
Flutter Festival Songdo example Project. Contribute to curogom/flutter_state_management development by creating an account on GitHub.
github.com
- 원래 기본 Counter App에 상태관리 형태를 붙여둔 Sample App
'Flutter > Get X' 카테고리의 다른 글
[Flutter / 플러터] GetX 의존성주입(Dependency) (0) | 2022.04.28 |
---|---|
[Flutter / 플러터] GetX 반응형 상태관리 (0) | 2022.04.27 |
[Flutter / 플러터] GetX 상태관리 (0) | 2022.04.26 |
[Flutter / 플러터] Get X 란? (라우터 기능) (0) | 2022.04.25 |