在库比蒂诺选项卡栏视图内外导航

问题描述 投票:0回答:2

这是我在 Flutter 中的第一个应用程序,一切都很好,很顺利,现在我有点受阻了。

我无法按照我在图像上显示的方式在 CupertinoTabBar 和我的登录显示(不应该有)之间导航。

登录工作正常,当收到服务器的 200 响应时,导航到带有 CupertinoTabBar 的视图。

但是当我按下注销按钮时,我需要返回到登录视图,没有任何选项卡栏。

我能够导航回登录的唯一方法是这样的:

Navigator.push(context, CupertinoPageRoute(builder: (context) => LoginView()),);

这使得我的 LoginView 保留在小部件堆栈中的 tabBar 内,更糟糕的是,如果我再次登录,我最终会在前一个 tabBar 上堆叠另一个 tabBar。

有什么更好的方法吗?

Navigate beetwen screen without navigation an CupertinoTabBar

非常感谢, 加比

flutter flutter-layout
2个回答
0
投票

您可以使用

pushAndRemoveUntil
弹出堆栈中不需要的路由。也许,您想删除所有这样的路线:

Navigator.of(context).pushAndRemoveUntil(CupertinoPageRoute(builder: (context) => LoginView()), (r) => false);

或者,如果您当前的路由是注销,您可以将其替换为登录路由,路由堆栈将保持不变:

Navigator.of(context).pushReplacement(CupertinoPageRoute(builder: (context) => LoginView()));

0
投票

从逻辑上讲,您应该像这样最初为登录屏幕设置 rootNavigator tru

Navigator.of(context, rootNavigator: true).pushAndRemoveUntil(
      CupertinoPageRoute(builder: (context) => LoginScreen()),
      (route) => false);

之后,如果您尝试注销或重置代码下方的根目录,它将帮助您

Navigator.pushReplacement(context,
                CupertinoPageRoute(builder: (conte) {
              return SplashScreen();
            }));
© www.soinside.com 2019 - 2024. All rights reserved.