말이많은 뜨거운 감자인 GetX이다.
실제로 회사에서 GetX를 써봤고 굉장히 러닝커브가 낮기때문에 손쉽게 카운터앱을 짤 수 있었다.
GetX로 카운터앱을 어떻게 짜는지 방법에 대해서는 설명하지 않겠다. 그냥 코드를 올리기만 하려고 한다.
코드는 아래와 같다.
import 'package:get/get.dart';
class Controller {
RxInt number = 0.obs;
void increase() {
number++;
}
void decrease() {
number--;
}
}
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:shw_test/components/button.dart';
import 'package:shw_test/getx/controller.dart';
class GetXScreen extends StatelessWidget {
const GetXScreen({super.key});
@override
Widget build(BuildContext context) {
Controller controller = Get.put(Controller());
return Scaffold(
appBar: AppBar(
title: const Text("Counter"),
),
body: Center(
child: Column(
children: [
Obx(
() => Text(
controller.number.toString(),
style: const TextStyle(fontSize: 50),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Button(
text: "+",
fontSize: 30,
onPressed: () {
controller.increase();
},
),
SizedBox(
width: 20,
),
Button(
text: "-",
fontSize: 30,
onPressed: () {
controller.decrease();
},
),
],
),
],
),
),
);
}
}
GetX는 분명 너무나 쉽고 편하다. 근데 왜 논란일까?
내가 생각하는 단점은 아래와같다.
1. 상태관리만 사용하고 싶은 입장에서 GetX는 너무 기능이 많고 무겁다.
2. GetX는 Flutter의 BuildContext를 사용하지 않고 상태관리를 할 수 있다는 점은 나중에 어떤 문제를 야기하게 될지 알 수 없다.왜냐면 이거는 플러터라는 프레임워크의 철학을 반하고 있기 때문이다.
3. Obx로 어떻게 잘 묶느냐가 관건, 잘못하면 너무 더러운 코드가 될수도 있다
4. 앱이 성장하고 더 복잡해지고 캐싱 등이 필요한 경우 GetX로 인해 성능이 저하되고 구현이 어려워진다.(내가 아직 어설픈 개발자라서 그런걸수도 있다....)
'개발 > Flutter' 카테고리의 다른 글
[상태관리#3]Provider (1) | 2023.11.22 |
---|---|
[상태관리#2]Bloc (2) | 2023.11.22 |
[상태관리#0] 상태관리 공부에 앞서.. (0) | 2023.11.21 |
Flutter Package 첫 배포 (1) | 2023.11.04 |
flutter가 선택한 dart언어의 특징 (0) | 2023.10.29 |