<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      GetX數據管理總結

      GetX數據管理總結

      Get有兩個不同的狀態管理器:簡單的狀態管理器(GetBuilder)和響應式狀態管理器(GetX和Obx)。

      簡單狀態管理

      簡單狀態管理,當數據源變化時,需要手動執行刷新組件的方法,此狀態管理器內部實際上是對StatefulWidget的封裝,占用資源極少

      import 'package:flutter/material.dart';
      import 'package:get/get.dart';
      
      class CounterController extends GetxController {
        int count = 0; // 普通狀態,沒有使用obx設置為響應式變量
      
        void increment() {
          count++;
          update(); // 當狀態改變時,手動通知 GetBuilder 重新構建 UI。
        }
      }
      
      void main() {
        runApp(
          GetMaterialApp(
            home: Scaffold(
              appBar: AppBar(title: Text('GetBuilder Example')),
              body: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    GetBuilder<CounterController>(
                      init: CounterController(),
                      builder: (controller) {
                        return Text('Count: ${controller.count}');
                      },
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Get.find<CounterController>().increment();
                      },
                      child: Text('Increment'),
                    ),
                  ],
                ),
              ),
            ),
          ),
        );
      }
      

      響應式狀態管理

      Obx和GetX:響應式狀態管理,當數據源變化時,將自動執行刷新組件的方法;

      但Getx允許在構建時初始化控制器,并且在 builder 函數中直接使用傳入的控制器實例。

      /**
      *	Obx方式
      **/
      import 'package:flutter/material.dart';
      import 'package:get/get.dart';
      
      class CounterController extends GetxController {
        var count = 0.obs;
      
        void increment() {
          count.value++;
        }
      }
      
      // CounterController 中的 count 是一個可觀察變量,Obx 監聽 count 的變化,當 increment 方法被調用使 count 值改變時,Obx 內部的 Text 組件會自動更新。
      
      void main() {
        Get.put(CounterController()); // 注冊控制器
        runApp(
          GetMaterialApp(
            home: Scaffold(
              appBar: AppBar(title: Text('Obx Example')),
              body: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Obx(() => Text('Count: ${Get.find<CounterController>().count}')),
                    ElevatedButton(
                      onPressed: () {
                        Get.find<CounterController>().increment();
                      },
                      child: Text('Increment'),
                    ),
                  ],
                ),
              ),
            ),
          ),
        );
      }
      
      /**
       * GetX實現方式
       */
      
      import 'package:flutter/material.dart';
      import 'package:get/get.dart';
      
      class CounterController extends GetxController {
        var count = 0.obs;
      
        void increment() {
          count.value++;
        }
      }
      
      // GetX 通過 init 初始化控制器,在 builder 函數中可以直接使用傳入的控制器實例來訪問其狀態和方法。
      
      void main() {
        runApp(
          GetMaterialApp(
            home: Scaffold(
              appBar: AppBar(title: Text('GetX Example')),
              body: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    GetX<CounterController>(
                      init: CounterController(),
                      builder: (controller) {
                        return Text('Count: ${controller.count}');
                      },
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Get.find<CounterController>().increment();
                      },
                      child: Text('Increment'),
                    ),
                  ],
                ),
              ),
            ),
          ),
        );
      }
      

      使用場景

      • Obx:適用于需要實時響應狀態變化的場景,尤其是狀態變化頻繁且需要自動更新 UI 的情況。例如,實時顯示輸入框的內容、實時更新計數器的值等。
      • GetX:和 Obx 適用場景類似,但當你希望在構建時初始化控制器并直接使用控制器實例時,使用 GetX 會更方便。
      • GetBuilder:適合狀態變化不頻繁,或者你希望手動控制 UI 更新的場景。例如,在某些操作完成后才更新 UI,這樣可以減少不必要的 UI 重建,提高性能。

      性能表現

      • ObxGetX:由于它們基于響應式編程,會自動監聽狀態變化,可能會有一定的性能開銷。不過,GetX 框架在設計上已經做了優化,能盡量減少不必要的重建。
      • GetBuilder:因為需要手動調用 update 方法來更新 UI,所以可以更精確地控制 UI 重建的時機,在一些情況下能減少性能開銷。但如果忘記調用 update 方法,UI 就不會更新。

      總結

      一般來說,對于大多數場景都是可以使用響應式變量。但是每個響應式變量(.obs),都需要生成對應的 Stream,如果對象足夠多,將生成大量的 Stream,必將對內存造成較大的壓力,該情況下,就要考慮使用簡單狀態管理了

      posted @ 2025-03-05 00:24  CD、小月  閱讀(83)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区四区不卡| 国产日韩av二区三区| 亚洲第四色在线中文字幕| 日韩人妻无码精品久久| 精品无码国产污污污免费| 欧美激情 亚洲 在线| 久久久久久伊人高潮影院| 国产精品一区二区三区蜜臀| 亚洲国产精品人人做人人爱| 五月开心六月丁香综合色啪 | 99久久国产宗和精品1上映| 国产精品无遮挡又爽又黄| 国产精品三级中文字幕| 色香欲天天影视综合网| 免费无遮挡毛片中文字幕| 午夜精品福利亚洲国产| 亚洲欧美日韩在线码| 精品亚洲国产成人| 人妻夜夜爽天天爽三区麻豆av| 中文字幕乱码在线播放| 色吊丝二区三区中文写幕| 天堂v亚洲国产v第一次| 亚洲 自拍 另类 欧美 综合| 亚洲av高清一区二区三| 怡春院久久国语视频免费| 久久精品国产免费观看频道| 国产毛a片啊久久久久久保和丸 | 国产卡一卡二卡三免费入口 | 国产精品综合一区二区三区| 欧美老熟妇喷水| 亚洲成片在线看一区二区| 这里只有精品在线播放| аⅴ天堂中文在线网| 精品国产高清中文字幕| 亚洲综合天堂一区二区三区| 亚洲人成色77777在线观看| 亚洲精品国产男人的天堂| 在线看无码的免费网站| 国产乱码精品一区二区三区四川人 | 精品成在人线av无码免费看| 国产伦一区二区三区视频|