我有一個帶有GetX控制器的 Flutter 應用程式。該應用程式有 6 個螢屏,每個螢屏都有其GetxController.
螢屏 1 和 2 用于登錄系統,而螢屏 3 至 6 用于應用程式內容。
登錄后,用戶可以在螢屏 3-4-5 之間前進和后退,但是當他到達螢屏 6 時,他只能轉到螢屏 3,并且必須洗掉所有之前的堆疊(因此他不能回傳)。
1st problem:如果我Get.offAll(() => const Screen3())從 Screen 6 執行操作,Screen3 的控制器將被洗掉并且不再起作用。我解決方法(不知道這個詞是否存在!:D)通過標記Controller3為永久性
Get.put(Controller3(), permanent: true)
但是來了
2nd problem:如果用戶按下logout按鈕(僅出現在螢屏 3 中),這次我需要Controller3洗掉。這一次, callingGet.offAll不會洗掉控制器,也不會洗掉 calling Get.delete<Controller3>(),因為它說
“Controller3”已被標記為永久,SmartManagement 無權洗掉它。
我被困在這種情況下,我真的不知道該怎么辦
uj5u.com熱心網友回復:
所以Getx正如你所說,讓我們GetxController像這樣做一個永久的:
Get.put<Controller3>.put(Controller3(), permanent: true);.
你不能正常洗掉它:
Get.delete<Controller3>();
但是您可以選擇洗掉標有 的控制器,方法是permanent使用如下屬性強制洗掉force它:
Get.delete<Controller3>(force: true);
force即使標記為永久,也會洗掉一個實體。
uj5u.com熱心網友回復:
第一個問題:如果我從 Screen 6 執行 Get.offAll(() => const Screen3()),Screen3 的控制器將被洗掉,并且不再起作用。
我沒有得到參考的部分。當您從 6 --> 3 路由時,系結機制應該再次生成螢屏 3 的控制器。
順便說一下,您可以在任何地方使用 with 手動制作它
var controller = Get.put(SomeController());
controller.dispose();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535031.html
標籤:扑镖控制器颤动getx
