我在Flutter上使用GetX进行路由管理时遇到问题。
我在底部导航栏中有一个按钮,可以从应用程序的任何位置按下。让我们把用户按下按钮时所处的位置称为根屏幕。按下此按钮后,会弹出一个新的屏幕a,其中包含更多选项,当与之交互时,将转到屏幕B,屏幕B将转到屏幕C,C以转到屏幕D结束。
我已经做到了,按下导航栏中的按钮将调用Get.to(A())
,屏幕A弹出,appBar的左上角有一个后退按钮,它将调用Get.back()
。我的问题是,当我在屏幕B、C或D上时,我想实现一个类似的后退按钮,当按下该按钮时,它将弹出到根屏幕(用户在与导航栏中的按钮交互之前所在的屏幕(。问题是,在这种情况下,Go.back()
只会导致上一个屏幕(D会导致C,B会导致A(,使用Get.offAllNamed("rootScreen")
意味着我必须存储根屏幕的名称并将其一直传递给D。有没有更容易的方法可以弹出到根屏幕/使用Get的任何替代方法?谢谢
编辑:目前,我多次调用Get.back()
,它似乎有效。例如,如果我在屏幕B上,我会连续调用2次以返回根屏幕,如果在C上,则调用3次,等等。如果有人知道更有效的方法,请帮助我,谢谢!
将路由存储在类Constants
中的某个小constants.dart
中的静态常数值中
这样,您就可以轻松地使用命名导航,而无需将路线路径深入到导航堆栈中。
致电Get.offUntil(Constants.rootScreen);
这将弹出你的导航堆栈,直到你到达你想要的屏幕。