这是我在 Flutter 中的第一个应用程序,一切都很好,很顺利,现在我有点受阻了。
我无法按照我在图像上显示的方式在 CupertinoTabBar 和我的登录显示(不应该有)之间导航。
登录工作正常,当收到服务器的 200 响应时,导航到带有 CupertinoTabBar 的视图。
但是当我按下注销按钮时,我需要返回到登录视图,没有任何选项卡栏。
我能够导航回登录的唯一方法是这样的:
Navigator.push(context, CupertinoPageRoute(builder: (context) => LoginView()),);
这使得我的 LoginView 保留在小部件堆栈中的 tabBar 内,更糟糕的是,如果我再次登录,我最终会在前一个 tabBar 上堆叠另一个 tabBar。
有什么更好的方法吗?
非常感谢, 加比
您可以使用
pushAndRemoveUntil
弹出堆栈中不需要的路由。也许,您想删除所有这样的路线:
Navigator.of(context).pushAndRemoveUntil(CupertinoPageRoute(builder: (context) => LoginView()), (r) => false);
或者,如果您当前的路由是注销,您可以将其替换为登录路由,路由堆栈将保持不变:
Navigator.of(context).pushReplacement(CupertinoPageRoute(builder: (context) => LoginView()));
从逻辑上讲,您应该像这样最初为登录屏幕设置 rootNavigator tru
Navigator.of(context, rootNavigator: true).pushAndRemoveUntil(
CupertinoPageRoute(builder: (context) => LoginScreen()),
(route) => false);
之后,如果您尝试注销或重置代码下方的根目录,它将帮助您
Navigator.pushReplacement(context,
CupertinoPageRoute(builder: (conte) {
return SplashScreen();
}));