常州网站建设常州,北海市做网站的公司,网页制作动态模板,小程序直播平台背景
使用GetX开发应用的时候#xff0c;也可能有人调用过offAllNamed#xff0c;会发现所有controller的都被销毁了
环境
win10 getx 4.6.5 as 4
现象
从A页面#xff0c;跳转到B页面#xff0c;然后调用offAllNamed进行回到A页面#xff0c;观察controller声明周期…背景
使用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的。