본문 바로가기
개발/Flutter

[상태관리#1] GetX

by devshw 2023. 11. 22.

말이많은 뜨거운 감자인 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