我在GetXController中发起网络请求,在网络回调后,我应该判断这个控制器/这个页面是否被释放。如果这个页面没有被释放,就更新页面。如果这个页面被释放,我不做任何记录。据我所知,我可以在flutter origin中编写下面的代码:
if (mounted) { // update page setState({ }); }
那么我的问题是如何在GetX中编写控制器呢?
f2uvfpb91#
mounted只能在Stateful小部件内部调用,因此不能在Controller内部使用。如果您使用的是命名路由,我认为您可以获取当前页面的名称并执行一些操作。
if(Get.routing.current == "/home"){ doSomething(); }
zfycwa2u2#
mounted bool仅特定于StateFulWidget,我可以考虑将其作为Stream<bool>传递给控制器,然后使用它,但是,这不是理想的解决方案,可能会有很大的问题。另一方面,您可以在呼叫方法之前检查mounted,如下所示:
mounted
StateFulWidget
Stream<bool>
// .... onPressed: () { if (mounted) { controller.sendRequest(); } }, // ....
2条答案
按热度按时间f2uvfpb91#
mounted只能在Stateful小部件内部调用,因此不能在Controller内部使用。
如果您使用的是命名路由,我认为您可以获取当前页面的名称并执行一些操作。
zfycwa2u2#
mounted
bool仅特定于StateFulWidget
,我可以考虑将其作为Stream<bool>
传递给控制器,然后使用它,但是,这不是理想的解决方案,可能会有很大的问题。另一方面,您可以在呼叫方法之前检查
mounted
,如下所示: