Flutter에서 기본적으로 상태를 관리하는 방법은 Stateful Widget 내에서 관리하는 것이다.
하지만 화면이 복잡하고 프로젝트의 규모가 커질 수록 부모 위젯에서 자식 위젯간으로 상태를 전달하는 방법 만으로는 제한적일 때가 자주 일어나고 Stateful Widget은 상태가 바뀔 때마다 화면을 재렌더링 하면서 불필요한 Widget까지 렌더링 하며 성능을 떨어뜨릴 수 있다.
때문에 보통은 상태를 관리해주는 라이브러리를 이용하게 되는데 (Flutter가 아닌 다른 언어에서조차) 이 중에서 GetX를 사용하게 되었다. 처음 Flutter를 접할 때에는 라이브러리 없이 상태관리를 했었으나 추후에는 React Native에서 사용하던 context api와 유사하다고 판단한 provider를 이용했었으며 현재는 GetX를 사용하고 있다.
GetX를 사용하게 된 이유는 사실 특별한 것 없이 현재 다니고 있는 회사에서 채택하고 있기 때문에 자연스럽게 쓰게 되었다. 그러나 사용하면 사용할 수록 GetX의 편리함과 실용성에 대해 감탄하게 되어 이제는 GetX를 적극 추천하고 있다.
GetX에 대해 그럼 간단하게 알아보자.
1️⃣ 간단 GetX 소개
https://github.com/jonataslaw/getx/tree/master
GetX에 관해서는 깃허브에서 더욱 자세하게 알 수 있다. 내 블로그에서는 쉽고 이해가 간단한 수준에서 정리해보겠다.
GetX는 Flutter에서 사용가능한 상태관리 라이브러리로 고성능 상태 관리, 종속성 관리, 그리고 빠르고 실용적인 라우팅 관리가 가능하다. GetX는 라이브러리의 모든 사항에 대해서 "생산성", "성능", "조직화"의 3가지 기본 원칙을 가지고 있다고 한다.
"생산성" ➡ 쉽고 친숙한 구문으로 효율적인 개발 가능
"성능" ➡ 최소한의 리소스 소비
"조직화" ➡ 자체 종속성을 사용하여 화면과 로직, 모델 등의 완벽한 분리
특히 조직화에 있어서 매우 큰 체감을 하고 있으며 따로 습득에 시간을 많이 투자하지 않아도 될 정도로 쉽게 배워 사용할 수 있다.
2️⃣ GetX 사용하기
1. pubsepc.yaml에 라이브러리 추가하기
dependencies:
get: ^4.6.6
pubspec.yaml 파일에 추가해주면 되는데, 현재 나온 가장 최신 버전의 GetX의 버전은 4.6.6 버전이다.
GetX readme 파일을 꼼꼼하게 읽고 GetX 버전과 설치된 Flutter의 버전이 호환가능한지 살펴보는 것도 중요하다.
이런 결과와 비슷한 값이 출력된다면 Flutter 버전과 GetX 버전이 호환되지 않는다는 뜻이니 이에 맞추어 변경해주면 된다. 나의 경우엔 Flutter(3.10.5)를 업그레이드 하는 대신 get 버전을 4.5.5로 낮춰서 사용했다.
2. main.dart에서 GetMaterialApp으로 변경
GetX를 쓰기 위해서는 우선 main 함수에서 반환하는 MyApp 내의 MaterialApp을 GetMaterialApp으로 감싸주어야한다.
단, 단순히 상태 또는 종속석 관리에만 Get을 사용하는 경우에는 GetMaterialApp을 사용할 필요가 없다. 하지만 기왕 GetX를 쓴 김에 router, dialog, locale 등 다양한 기능을 함께 사용해보는 것을 추천하는 바이다.
3. GetxController 사용하기
GetX를 쓰는 다음부터는 특별한 상황 (화면 내에서 별도로 상태관리를 해주어야하는 상황)을 제외하고는 모두 Stateless Widget으로 선언하여 View를 관리해준다. 우선은 평범하게 Stateless Widget으로 된 화면을 하나 만들어준다.
그리고 로직을 관리해주는 Viewmodel을 만드는데, 이때 클래스는 GetxController로부터 상속받는다. 여기서 관리할 상태나 함수 등등 모든 로직을 선언해주면 되는데, 테스트로 손쉽게 확인 가능한 TextEditingController를 선언했다.
그리고 선언한 View에서 GetxController를 상속한 ViewModel을 불러오는 방법은 Get.put() 함수이다. build 내에서 컨트롤러를 선언하고 이를 화면단에서 사용하면 정말 쉽게 상태를 관리할 수 있다.
여기까지만 알아도 GetX의 기본적인 세팅과 사용법은 끝났다. 상당히 쉽고 강력한 사용방식으로 GetX를 쓰게 된다면 훨씬 간편하게 개발할 수 있다. 다만 단점으로는, GetX에 익숙해진 나머지 Flutter의 기본기를 잊을 수도 있다...! 반드시 Flutter의 동작원리와 자체 상태 관리에 대해 잘 이해한 다음 상태관리 라이브러리를 사용하는 편이 좋겠다.
더 많은 GetX 사용법은 공식 깃허브에서 확인하자. 이해하기 쉽고 더 자세하게 설명되어있어 GetX에 대해 많은 이해를 할 수 있다.
'Flutter > 문제해결' 카테고리의 다른 글
문제해결 : SDK version issue. This app was built with the iOS 16.4 SDK. (0) | 2024.02.14 |
---|---|
문제해결 : Unable to boot the simulator (0) | 2023.11.13 |
Flutter의 IconButton 완전 정복하기 (0) | 2023.11.02 |
Android 무선 디버깅 하기 (0) | 2023.11.02 |
문제해결 : 안드로이드 사진 첨부 되지 않는 현상 (권한) (0) | 2023.09.26 |