[Flutter] GetX ① - 소개
이번 포스팅에서는 플러터의 거의 모든 것을 다 구현할 수 있는 GetX 에 대해서 포스팅합니다.
GetX 로 할 수 있는 것
라우팅
스낵바, 다이얼로그, 바텀시트
상태관리
종속성 관리
테마
http
Shared Preference
.
.
GetX 의 최대 강점은 생산성입니다.
GetX 의 장점으로 가장 먼저 소개할 수 있는 부분이며 개발자가 가장 와닿을 수 있는 부분입니다.
상술한 모든 것들을 GetX 하나를 통해 GetX 없이 구현하는 것보다 직관적인 코드로 간단하게 구현할 수 있으며 개발자가 신경 써야 할 부분들을 줄여주어서 개발을 빠르게 진행할 수 있습니다.
라우팅 코드로 예를 들면 바로 이해가 가실 겁니다.
// Normal
Navigator.push(
context,
MaterialPageRoute(builder: (context) => NextScreen()),
);
// GetX
Get.to(NextScreen());
문서를 보시면 아시겠지만 라우팅뿐만 아니라 다른 기능들도 모두 간단하게 구현할 수 있습니다.
그 외의 장점으로는
- 컨트롤러들을 사용되지 않을 때 제거해주기 때문에 개발자분들은 더욱더 개발에만 신경 쓸 수 있습니다.
- 성능과 최소한의 리소스 소비에 중점을 두기 때문에 Streams나 ChangeNotifier를 사용하지 않음
- View, 프레젠테이션 로직, 비즈니스 로직, 종속성 주입 및 내비게이션을 완전히 분리하여 관리
- 자체 종속성 주입 기능을 사용하여 DI를 뷰에서 완전히 분리하기 때문에 MultiProvider 와 같은 위젯 트리에서 컨트롤러/모델/블록으로 주입할 필요가 없음
GetX 를 짧게 써본 입장에서 우려되는 점은...
정말 편하고 빠르게 개발할 수 있다는 큰 장점이 있지만, 너무 많은 것들을 GetX 를 통해 개발하니 불안함이 느껴집니다.
지금 당장은 그럴 일은 없겠지만, 후에 GetX 의 업데이트가 어느 순간 멈춰버린다면??
개인적인 이야기지만 프리랜서로 있을 때 안드로이드 유지보수일을 하나 맡았었던 적이 있었는데, 이미지 업로더가 작동 안 되니 고쳐달라는 것이었습니다.
이미지 업로더는 직접 구현을 한 것이 아닌 라이브러리를 통해 구현한 것이었고 2018년도에 마지막 업데이트를 한 상황이었습니다.
업데이트를 하지 않았기 때문에 안드로이드 최신 버전에 대한 대응이 되지 않았고 결국엔 그 라이브러리를 도려내고 새롭게 기능을 구현해서 시간을 좀 들였던 적이 있습니다.
저의 이야기는 단순히 이미지 업로드의 기능에서 문제가 생겨 그 기능을 사용하는 라이브러리만 손보면 됐었습니다만, GetX 는 앱의 대부분의 기능에 영향을 주고 있습니다. 치명적인 결함이 발생했을 때 대응할 수 있는 시간이 더욱 길 것이며, 앱 전체를 갈아엎어야 하는 지옥문이 열리는 상황이 생길 수도 있을 것 같습니다.
소개하는 글에서 너무 단점만 부각시킨 것 같습니다.
다음 포스팅 부터는 GetX 의 기능들을 하나하나 소개하며 장점들을 보여드리겠습니다.