> 文章列表 > GetX 状态管理

GetX 状态管理

GetX 状态管理

Future<void> init() async {Get.put(TapController());
}Future<void> main() async {WidgetsFlutterBinding.ensureInitialized();await init();runApp(const MainApp());
}

在开始阶段把TapController put压入内存

后面需要用的时候可以直接:

Get.find<TapController>()....   调用实例

在需要刷新小部件的时候可以选择

1:  GetBuilder<TapController>(builder:(_){... })  或者 GetX<...>(builder:(_){...})

2:  Obx(() { ... })   

方法2需要在TapController class里把对应的参数后加 .obs

Obx和GetX<MyController>和GetBuilder<MyController>的区别:
1: Obx的Controller作用域是在外面的,而GetX<MyController>的Controller作用域只限于当前函数体里面的.
2: GetBuilder<MyController>和GetX<MyController>的区别在于GetBuilder<MyController>的性能会更高一点

import 'package:get/get.dart';class CountController extends GetxController {var count = 0;void increment() {count++;update(['jimi_count']);}
}import 'package:flutter/material.dart';
import 'package:flutter_getx_example/GetXControllerUniqueIDExample/CountConroller.dart';
import 'package:get/get.dart';class GetXControllerUniqueIDExample extends StatelessWidget {CountController countController = Get.put(CountController());@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("GetX Obx---GetXController"),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [GetBuilder<CountController>(builder: (controller) {return Text("计数器值为: ${controller.count}",style: TextStyle(color: Colors.red, fontSize: 30),);},),GetBuilder<CountController>(id: 'jimi_count',builder: (controller) {return Text("计数器值为: ${controller.count}",style: TextStyle(color: Colors.green, fontSize: 30),);},),SizedBox(height: 20,),ElevatedButton(onPressed: () => countController.increment(),child: Text("增加"))],),),);}
}

只有update里设置的才会刷新,如果不填都会刷新

足球知识