Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

Flutter/Flutter Study

[Flutter] GetX

방피터 2022. 10. 17. 10:13

Flutter 문서에서 상태관리 잘 모르면 닥치고 프로바이더 쓰라고 그랬다. 그래서 프로바이더 열심히 쓸라고 그랬는데;;;; 이새끼들 뭐야... 더 좋은 게 있었잖아? Likes가 무려 10559! getX!

getX
Provider

당연히 그럼 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 사용할 필요가 없음. -_-;;; 아... 그런거야?

Get을 사용하면 StatefulWidget을 사용할 필요가 엄슴!

GetX가 인기있는 이유를 알겠네... 엄청 쉽고 진짜;;; 상태 관리랑 라우트 말고도 별별 기능을 다 제공해.
지역설정에 따른 번역기능이나 UI 테마 변경, http나 websocket을 편하게 할 수 있는 getConnect 등등 get만 있으면 왠만한 앱 다 개발하겠다 싶어 ㅋㅋㅋ

vscode 사용하는 사람은 GetX Extension 쓰면 좋을 것 같음. 👇
https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets

GetX Snippets - Visual Studio Marketplace

Extension for Visual Studio Code - An extension to accelerate the process of developing applications with flutter, aimed at everyone using the Get package.

marketplace.visualstudio.com

반응형