[Flutter] GetX


最近、卒業の準備のために、ある会社のプロジェクトに参加しました.
flutter 1.xバージョン+blocモードのプロジェクトで、私が担当しているのは
flutter 2.は、xバージョン+GetXへの移行です.
でも、こいつGetXは甘くて、正確に何かを知らないと、何を書いているのか分からないような気がするので、整理したいので、ついでに投稿します.
最初のpost日付を基準に、最新バージョンget 4.6.1.
これは私が見たいpostです.内容は省略するかもしれませんが、後で暇を見つけて全部整理するつもりです.
GetX
現在のstate Managementだけでなく、flufパッケージの中で最も人気のあるパッケージです.
GetXと呼ばれていますが、パッケージ名は簡単にgetと呼ばれています
紹介されているものが多いですが、まずはアクセス機能についてお話ししましょう!
Installing
  • Terminal
  • flutter pub add get
  • import
  • import 'package:get/get';
    使用する機能に応じて異なるimportを使用できますが、上のコードを簡単に書いても問題ありません.
    ルーティング管理
    GetXは簡単なルーティング管理を提供します.
    次は原ルートの移動方法です.
    Navigator.of(context).push(
    	MaterialPageRoute(
        	builder: (BuildContext context) => NextPage(),
        ),
    );
    これはGetXで以下のように使えます.
    Get.to(NextPage());
    TODO
    {すべてのルーティングを取得します.toNameに切り替え
    ステータス管理
    ステータス管理にもいろいろな方法があります.
    その中で一番便利な方法はOBxのようですが、他の方法を使う場合もありますが…
    宣言変数+使用変数
    コントローラにステータス変数を宣言します.
    宣言の仕方はいろいろありますが、
    シンプルなステータス管理
    class Controller extends GetxController {
        // 단순하게 변수를 만들어주면 된다.
        int count = 0;
        void increment() {
        	count++;
            update();
        }
    }
    
    // 사용은 아래처럼하면 된다.
    GetBuilder<Controller>(
        builder: (c) {
        	return Text("${c.count}");
        }
    }
    レスポンスステータス管理
    class Controller extends GetxController {
        // 반응형 상태 관리는 .obs를 붙여준다.
        var count = 0.obs
        void increment() {
        	count.value++;
        }
    }
    
    // 사용은 아래처럼하면 된다.
    ObX(() {
        return Text("${_controller.count.value}");
    }
    反応型も使いやすくていいです.
    もちろんGetBuilderと同時にobsを使うことができます!
    最も簡単な方法は
    .obx + Obx(() {})
    反応状態管理変数宣言のもう1つの方法は、次のとおりです.
    var count = Rxn(0); -> 初期値がない場合null
    あります.
    Rx(0)であってもよく、nはnullを表す
    flutter 2.xではRxnの方が良いかもしれません.
    しかし問題が発生しました...
    Scaffoldにはappbar、bodyなどいろいろあります.
    Obx()では、主にWidgetの位置であり、それを置き換える役割を果たす.
    appbarとbodyでそれぞれObxを作って、コードが汚く見えます...
    だから考え方はScaffoldをObxに入れること!
    Obx(() {
      return Scaffold(
      	appbar: ~~,
      	body: ~~
      );
    }
    それは不可能だ
    エラーが発生しました.
    OBSとObxは万能だと思っていたので、そのままGetXを勉強し直しました.
    こんな時に使うのは?
    GetBuilderの使用
    Scaffold以外でGetXまたはObxを使用するとエラーが発生します.
    ただし、GetBuilderではエラーは発生しません.
    GetBuilder<Controller>(
      builder: (c) {
        return Scaffold(
      	appbar: ~~,
      	body: ~~
        );
      }
    )
    結局歩きやすくしようとしたが、結局回ってしまった.
    むしろもっと
    正直に言うと、勉強を続けることができて嬉しいです.
    依存関係の管理
    これはまた勉強して書きます!