数据变化监听
除了使用 Obx 实现界面数据自动刷新外,GetX 提供了多种手动方式对响应式变量进行数据变化监听,当数据发生变化时执行自定义的逻辑,比如数据变更后重新请求接口等。
ever 当数据发生改变时触发
everAll 和 "ever "很像,只是监听的是多个响应式变量的变化,当其中一个发生变化就会触发回调
once 只在变量第一次被改变时被调用
debounce 防抖,即延迟一定时间调用,且在规定时间内只有最后一次改变会触发回调。如设置时间为 1 秒,发生了3次数据变化,每次间隔500毫秒,则只有最后一次变化会触发回调。
interval 时间间隔内只有最后一次变化会触发回调。如设置时间间隔为1秒,则在1秒内无论点击多少次都只有最后一次会触发回调,然后进入下一次的时间间隔
实例化和绑定,使用
GetBuilder(
init: CounterController(), //Controller 首次初始化
builder: (controller) {
return Text("${controller.count}", style: const TextStyle(fontSize: 50));
})
直接实例化:
Get.put(CounterController());
延迟实例化,第一次使用时才被实例化:
Get.lazyPut(() => CounterController());
删除注入:
Get.delete();
查找:
final controller = Get.find();
// 或者
CounterController controller = Get.find();
普通路由
to:进入下一个界面
Get.to(CounterPage());
使用 arguments 进行参数传递:
Get.to(CounterPage(), arguments: count);
使用 arguments 方式可以传递任意类型的参数。
在下个页面获取参数:
dynamic args = Get.arguments;
off:进入下一个界面,且导航没有返回
Get.off(CounterPage());
offAll: 进入下一个界面并取消之前的所有路由
Get.offAll(CounterPage());
back:返回
Get.back();
返回传参:
Get.back(result: 'success');
获取返回参数:
var data = await Get.to(CounterPage());