在使用GetX
状态管理器的时候,如果每个页面都手动实例化一个控制器就太麻烦了,
Binding
的作用就是所有需要进行状态管理的控制器进行统一初始化
创建全局控制器Binding
import 'package:get/get.dart';
import '../controllers/counter.dart'; // 同上一篇内容一样
import '../controllers/list.dart'; // 同上一篇内容一样
class AllControllerBinding implements Bindings{
@override
void dependencies() {
// lazyPut:懒加载初始化,用到这个控制器的时候,会自动初始化
Get.lazyPut(()=> CountController());
Get.lazyPut(()=> ListController());
}
}
main 入口文件配置全局控制器
import './binding/binding.dart';
return GetMaterialApp(
initialBinding: AllControllerBinding(), // 表示全局绑定AllControllerBindin
);
用到控制器的页面
// 直接获取,无需创建
ListController controller = Get.find();
这样做的好处是,比如我们在A页面创建的控制器,但是用户先点击的B页面,B页面可能是直接获取这个控制器,就会出现报错,
直接在全局懒加载创建控制器,这样当使用这个控制器的时候,直接获取就行。