如何解决Flutter GETX:每次导航到其他页面/路由时如何删除初始化控制器
这里是新手。每次推回屏幕时如何重新运行 onInit() ? onInit() 仅运行一次,但导航回上一屏幕不会删除已初始化的控制器 (FetchData) 嗯..
我只在每次想要弹出页面时使用 Get.back(),并且 Get.toNamed() 每次我想在命名路线上导航时
我唯一想要发生的事情是每次弹出页面时删除初始化控制器(FetchData) 但我不知道该怎么做。
我的GetxController
class FetchData extends GetxController {
RxList items = [].obs;
@override
onInit() {
fetchData();
super.onInit();
}
Future<void> fetchData() async {
var result = await http.get("api.url");
items.value = result.body;
}
}
提前致谢!
解决方法
onInit 只调用一次。您可以使用另一种方法在从另一个屏幕返回时运行,例如,当调用新屏幕时,您可以等待它关闭,然后再次调用您的方法:
//go to new screen
await Get.toNamet(myscreen);
//after run my method
controller.fectchData();
如果您只想在某些情况下调用该方法,您可以返回一个 bool 以询问是否需要重新加载:
Get.back(result: true);
并在调用的屏幕中:
//go to new screen
var result = await Get.toNamet(myscreen);
if(result != null && result == true)//after run only if needed
controller.fectchData();
,
你可以使用
Get.offAndToNamed(url)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。