插入/注册依赖Get.put
使用 put
将需要依赖的对象插入到 GetX 中:
Get.put<CounterController>(CounterController());
Get.put<CounterController>(CounterController(), permanent: true);
Get.put<CounterController>(CounterController, tag: "counter");
插入依赖时除了依赖类的实例以外还可以设置额外参数:
- permanent:是否永久,默认 false 当实例不再使用时会进行销毁,true 则会一直保留
- tag:标签,用于区分同一个类不同实例。
Get.lazyPut
延迟初始化,在需要用到的时候才会初始化实例对象,即第一次 find 某一个类的时候才会进行初始化。
///只有当第一次使用Get.find<CounterController>时,CounterController才会被调用。
Get.lazyPut<CounterController>(() => CounterController());
Get.lazyPut<CounterController>(
() {
// ... some logic if needed
return CounterController();
},
tag: Math.random().toString(),
fenix: true
)
lazyPut 同样有额外参数,跟 put 基本相同。
- fenix:类似’永久’,不同的是,当不使用时,实例会被丢弃,但当再次需要使用时,Get会重新创建实例
- tag:标签,用于区分同一个类不同实例。
Get.putAsync
putAsync
可以异步注册一个实例。用于某些实例需要异步初始化时使用,比如 SharedPreferences
:
Get.putAsync<SharedPreferences>(() async {
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('counter', 12345);
return prefs;
});
跟 put 一样,同样拥有 permanent
和 tag
参数,且作用一样。
Get.create
create
与 put
使用方式上基本类似,不同的是它的 permanent
默认为 true。
Get.create<CounterController>(() => CounterController());
Get.find使用
通过 find()
方法获取依赖的实例:
final controller = Get.find<CounterController>();
// 或者
CounterController controller = Get.find();
///通过 tag 获取
final controller = Get.find<CounterController>("counter");
也可以通过 delete()
方法来手动移除注入的依赖实例,大部分情况下不需要手动调用该方法,GetX 内部会自动处理,当不需要时自动移除
Get.delete<CounterController>();