Flutter 문서에서 상태관리 잘 모르면 닥치고 프로바이더 쓰라고 그랬다. 그래서 프로바이더 열심히 쓸라고 그랬는데;;;; 이새끼들 뭐야... 더 좋은 게 있었잖아? Likes가 무려 10559! getX!
당연히 그럼 getX 써야지..설치!
%flutter pub add get
main.dart에서 App을 GetMaterialApp으로 감싸주란다. 그런데 이건 Get.to()나 Get.back()같은 route management 할 때만 필요한 과정이라고 안쓸거면 안해도 된단다. 써보지 뭐.
import 'package:get/get.dart';
void main() => runApp(GetMaterialApp(home: Home()));
그리고 Controller 하나 만들고 그 안에 count 변수하나, 증가 시키는 함수 하나.
class Controller extends GetxController {
var count = 0.obs;//observable =>getX에서 사용하는 state 변수 같은 건가보네..
increment() => count++;
}
하... 사용법은 개간단.. GetXController를 Get.Put으로 초기화시키고 걍 사용하면 됌. 업데이트하고 싶은 UI가 있으면 Obx써서 위젯 감싸버리면 되고;;
class Home extends StatelessWidget {
@override
Widget build(context) {
//Get.put으로 초기화
final Controller c = Get.put(Controller());
return Scaffold(
//Count가 변경되면 AppBar title이 변경됨.
appBar: AppBar(title: Obx(() => Text("Clicks: ${c.count}"))),
//Get.to()로 Navigation까지..
body: Center(child: ElevatedButton(
child: Text("Go to Other"), onPressed: () => Get.to(Other()))),
floatingActionButton:
FloatingActionButton(child: Icon(Icons.add), onPressed: c.increment));
}
}
class Other extends StatelessWidget {
//다른 페이지에서 사용되고 있는 Controller 찾아가지고 옴.
final Controller c = Get.find();
@override
Widget build(context){
//그리고 c.count로 접근함;;;
return Scaffold(body: Center(child: Text("${c.count}")));
}
}
아래 글이 눈에 띄네... Get 사용하면 StatefulWidget 사용할 필요가 없음. -_-;;; 아... 그런거야?
GetX가 인기있는 이유를 알겠네... 엄청 쉽고 진짜;;; 상태 관리랑 라우트 말고도 별별 기능을 다 제공해.
지역설정에 따른 번역기능이나 UI 테마 변경, http나 websocket을 편하게 할 수 있는 getConnect 등등 get만 있으면 왠만한 앱 다 개발하겠다 싶어 ㅋㅋㅋ
vscode 사용하는 사람은 GetX Extension 쓰면 좋을 것 같음. 👇
https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets
'Flutter > Flutter Study' 카테고리의 다른 글
[Flutter] loading 화면 (0) | 2022.10.25 |
---|---|
[Flutter] Firebase auth email link login (0) | 2022.10.21 |
[Flutter] JSON, 직렬화???, Model, Firestore withConverter (1) | 2022.10.15 |
[Flutter] - Firebase firestore (1) | 2022.10.12 |
[Flutter] - Firebase auth! 소셜 로그인 (0) | 2022.10.12 |