Flutter GetX - 如何管理控制器删除?

Ale*_*eFe 4 controller dart flutter flutter-getx

我有一个带有GetX控制器的 Flutter 应用程序。该应用程序有 6 个屏幕,每个屏幕都有其GetxController.

屏幕 1 和 2 用于登录系统,而屏幕 3 至 6 用于应用程序内容。

登录后,用户可以在屏幕 3-4-5 之间前进和后退,但是当他到达屏幕 6 时,他只能转到屏幕 3,并且必须删除所有先前的堆栈(因此他无法返回)。

1st problem:如果我从 Screen 6 执行 a Get.offAll(() => const Screen3()),Screen3 的控制器将被删除,并且不再起作用。我的解决方法(不知道这个词是否存在!:D)通过标记Controller3为永久

Get.put(Controller3(), permanent: true)

但这里来了

2nd problem:如果用户按下logout按钮(仅出现在屏幕 3 中),这次我需要将其Controller3删除。这次,调用Get.offAll不会删除控制器,也不会调用Get.delete<Controller3>(),因为它说

“Controller3”已被标记为永久,SmartManagement 无权删除它。

我陷入这种境地,我真的不知道该怎么办

Gwh*_*yyy 8

正如Getx你所说,让我们GetxController像这样制作一个永久的:

Get.put<Controller3>.put(Controller3(), permanent: true);.
Run Code Online (Sandbox Code Playgroud)

你不能正常删除它:

Get.delete<Controller3>();
Run Code Online (Sandbox Code Playgroud)

但是您可以选择删除带有 标记的控制器permanent,方法是使用force如下属性强制删除它:

Get.delete<Controller3>(force: true);
Run Code Online (Sandbox Code Playgroud)

force即使标记为永久也会删除实例。