ios Flutter -如何在GetX中使用安装

5f0d552i  于 2022-11-26  发布在  iOS
关注(0)|答案(2)|浏览(203)

我在GetXController中发起网络请求,在网络回调后,我应该判断这个控制器/这个页面是否被释放。如果这个页面没有被释放,就更新页面。如果这个页面被释放,我不做任何记录。据我所知,我可以在flutter origin中编写下面的代码:

if (mounted) {
   // update page
   setState({
   });
}

那么我的问题是如何在GetX中编写控制器呢?

f2uvfpb9

f2uvfpb91#

mounted只能在Stateful小部件内部调用,因此不能在Controller内部使用。
如果您使用的是命名路由,我认为您可以获取当前页面的名称并执行一些操作。

if(Get.routing.current == "/home"){
   doSomething();
}
zfycwa2u

zfycwa2u2#

mounted bool仅特定于StateFulWidget,我可以考虑将其作为Stream<bool>传递给控制器,然后使用它,但是,这不是理想的解决方案,可能会有很大的问题。
另一方面,您可以在呼叫方法之前检查mounted,如下所示:

// ....
   onPressed: () {
      if (mounted) {
        controller.sendRequest();
      }
    },
    // ....

相关问题