TIL

[TIL] 상태관리

chengzior 2024. 10. 23. 20:52

내일배움캠프 Flutter 앱 개발 

GetX 통한 상태 관리

import 'package:get/get.dart';

class ProductController extends GetxController {
  Set<String> products = {};
  Set<String> leftProducts = {};
  Set<String> rightProducts = {};

  void addProduct(String product) {
    products.add(product);
    update();
  }
  void pushZone(bool isLeft, String product) {
  if (isLeft) {
    leftProducts.add(product);
  } else {
    rightProducts.add(product);
  }
  products.remove(product);
  update();
}
}

상태관리 하기위해서 어디에도 속하지 않는 컨트롤러를 등록해줘야 한다.
-> 원하는 상태를 가져다 놓고 등록.
-> update 함수를 통해 원하는 영역 바로 update.
-> (setState는 전체 업데이트)

setState의 한계
1. 여러 위젯 간에 상태를 공유해야 할 때, 상태를 전달하는 것이 복잡해지고 비효율적
2.상태 변경이 중앙에서 관리되지 않기 때문에 코드가 산만해지고 유지 보수가 어려움
3.해당 StatefulWidget 전체를 다시 빌드
4.setState는 위젯 트리의 특정 부분에서만 동작하기에 전역 상태를 관리하거나 앱 전체에서 상태 접근하기 어려움