Flutter GetX 为啥控制器在导航时没有自动删除
Posted
技术标签:
【中文标题】Flutter GetX 为啥控制器在导航时没有自动删除【英文标题】:Flutter GetX why are controllers not auto-deleted when navigating awayFlutter GetX 为什么控制器在导航时没有自动删除 【发布时间】:2021-09-02 20:07:12 【问题描述】:也许我在这里误解了一些东西,但我已经按照https://pub.dev/packages/get 上的文档为我的每个页面设置了一个控制器。
例如标准页面内容:
页数:
PageIntro -> PageLogin -> PageHome etc.
控制器:
- IntroController
- LoginController
- HomeController
我已经以相同的方式定义了我的每个页面,例如:
class PageIntro extends StatelessWidget
@override
Widget build(BuildContext context)
final IntroController c = Get.put(IntroController(context));
return Scaffold(
body: _buildContent(), // you get the idea.
);
我原以为当从 PageIntro 导航到 PageLogin 时,IntroController 会被删除,但事实并非如此。
我知道我可以手动删除控制器:
Get.delete<IntroController>();
但我不应该这样做。
除非我遗漏了什么/做了一些非常愚蠢的事情,否则这似乎更麻烦、更混乱,而只是让 PageIntro 扩展 StatefulWidget
,然后像往常一样在 dispose
覆盖方法中做我需要做的任何事情。
请知道这方面的人能告诉我吗?
谢谢。
【问题讨论】:
根据文档,我认为您必须使用绑定。 github.com/jonataslaw/getx/blob/master/documentation/en_US/… 【参考方案1】:在你的情况下,绑定是要走的路。
另一方面,当路由从堆栈中移除时,控制器也会被移除。在您的情况下,您可能会推送到下一个屏幕而不是替换它。
【讨论】:
以上是关于Flutter GetX 为啥控制器在导航时没有自动删除的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:当列表数据更改时,getx 控制器未更新。我如何确保添加的每个列表,GetX 控制器都知道这一点?
如何使用 GetX 包管理 Flutter Web URL 路由?