本文主要是介绍Flutter学习(七)GetX offAllNamed使用的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
使用GetX开发应用的时候,也可能有人调用过offAllNamed,会发现所有controller的都被销毁了
环境
win10
getx 4.6.5
as 4+
现象
从A页面,跳转到B页面,然后调用offAllNamed进行回到A页面,观察controller声明周期,发现controller声明周期直接调用到了onClose,这里如果做了一些释放资源的操作,那就直接导致功能使用异常了。
原因
offAllNamed会销毁所有controller,除非你的controller是永久的。
解决方法
issues地址:
https://github.com/jonataslaw/getx/issues/1955
推荐解决方式:
方式1:
Get.until((route) => Get.currentRoute == ‘/home’);
注意,这种方式,如果页面不存在,会导致失效,原理是until函数的设计如此。
方式2:
if(Get.isRegistered()){
Get.until((route) => route.settings.name == RouteNames.systemLoginEmail);
}else{
Get.offAllNamed(RouteNames.systemLoginEmail);
}
这个就是外加了一层判断,思想也是基于until的。
这篇关于Flutter学习(七)GetX offAllNamed使用的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!