[flutter]GetX(상태관리, 라우트 관리에 최적화된 flutter 라이브러리)
flutter에서는 statelessWiget, statefulWidget을 이용해서 상태가 필요한 위젯인지 필요없는 위젯인지를 구분한다.
이대로도 앱을 만드는 것에는 큰 문제가 없겠지만 Route 관리까지 한번에 할 수 있는 flutter 상태관리 라이브러리를 사용해보고자 했다.
상태관리는 GetX, provider, Bloc을 이용하여 관리할 수 있다.
이중에 가장 많은 likes수와 라우트 관리도 쉬운 GetX를 이용해보기로 했다.
Getx는 flutter를 위해 고성능 상태관리, 지능형 종속성 주입 및 경로 관리를 빠르고 실질적으로 결합하는 가볍고 강력한 솔루션이라고 소개하고 있다.
제공하는 기능이 많아 직관적인 코드로 간단하게 구현할 수 있는 코드가 많아진다는 생산성에서의 장점이 있지만
패키지 의존성이 높아서 혹시나 getx 패키지의 업데이트 (관리)가 잘 안될 경우 코드를 싹 다 엎어야 하는 사태가 일어날 수 있고, 수많은 기능이 포함되어 있어 앱이 무겁다는 단점도 함께 따라다닌다.
GetX는 MVVM 패턴을 사용할 수 있다.
MVVM은 뷰(view), 뷰모델(viewmodel), 모델(model)의 영역으로 나뉘어 클래스를 만든다.
MVVM 패턴을 적용해 아래와 같이 view, controller, bindings을 분리해서 관리할 수 있다.
view는 화면에 그려지는 UI를 그리는 역할을 하고, controllers는 상태와 로직을 관리한다. 마지막으로 bindings는 view와 controllers 를 연결해 주는 역할을 진행한다.
한달이 넘는 시간동안 getx를 사용해보니, 처음에는 controllers와 views로 나누어 관리하는 것이 익숙하지 않아 많이 헤맸지만 지금은 구분 되어 있다는 것이 코드 관리나 가독성 부분에서도 큰 장점이 되는 것 같다는 생각이 들었다.
또, 라우트나 상태관리에서도 확실히 간편하게 관리할 수 있다는 점이 좋았다.
//getx 사용하지 않을 때
Navigator.pushNamed(context, '/details');
//getx 사용할 떄
Get.toNamed('/details');
참고
https://pub.dev/packages/get#about-get
getx 관련 포스팅
[flutter] getx 라우팅 관리 & argument 값 넘겨주기
[flutter]GetX Error(obx/the improper use of a GetX has been detected 오류)