[英]Flutter and Getx: How to Pass parameters from UI to Getx controller?
[英]Flutter GetX - How to manage controller deletion?
我有一个带有GetX
控制器的 Flutter 应用程序。 该应用程序有 6 个屏幕,每个屏幕都有其GetxController
。
屏幕 1 和 2 用于登录系统,而屏幕 3 至 6 用于应用程序内容。
登录后,用户可以 go 在屏幕 3-4-5 之间前进和后退,但是当他到达屏幕 6 时,他只能 go 到屏幕 3,并且必须删除所有之前的堆栈(因此他不能 go 返回)。
1st problem
:如果我从屏幕 6 执行Get.offAll(() => const Screen3())
,则 Screen3 的 Controller 将被删除,并且不再起作用。 我通过将Controller3
标记为永久性解决方法(不知道该词是否存在::D)
Get.put(Controller3(), permanent: true)
但是来了
2nd problem
:如果用户按下logout
按钮(仅出现在屏幕 3 中),这次我需要删除Controller3
。 这一次,调用Get.offAll
不会删除 controller,也不会调用Get.delete<Controller3>()
,因为它说
“Controller3”已被标记为永久,SmartManagement 无权删除它。
我被困在这种情况下,我真的不知道该怎么办
第一个问题:如果我从屏幕 6 执行 Get.offAll(() => const Screen3()),则屏幕 3 的 Controller 将被删除,并且不再起作用。
我没有得到引用的部分。 当您从 6 --> 3 路由时,绑定机制应该再次生成屏幕 3 的 controller。
顺便说一下,您可以在任何地方使用 with 手动制作它
var controller = Get.put(SomeController());
controller.dispose();
所以Getx
正如您所说,让我们像这样永久设置GetxController
:
Get.put<Controller3>.put(Controller3(), permanent: true);.
你不能正常删除它:
Get.delete<Controller3>();
但是您可以选择删除标记为permanent
的 controller,方法是使用force
属性强制删除它,如下所示:
Get.delete<Controller3>(force: true);
force
即使标记为永久也会删除一个实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.