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里设置的才会刷新,如果不填都会刷新