Flutter Navigator.pushReplacementNamed 在页面显示返回按钮
Posted
技术标签:
【中文标题】Flutter Navigator.pushReplacementNamed 在页面显示返回按钮【英文标题】:Flutter Navigator.pushReplacementNamed show back button at the page 【发布时间】:2020-11-08 07:18:35 【问题描述】:我在 Flutter 应用程序中使用 Navigator.pushReplacementNamed
从登录页面导航到主页运行良好,但在我的主页中显示 appBar 上的返回箭头按钮,并在按下它时返回登录页面。我该怎么办?我试过把leading: Text('')
,但是当按下物理后退按钮时,它仍然会回到登录页面。
我有一个注销按钮,我希望用户仅通过此按钮而不是后退按钮注销
*这是我在这里的第一个问题,对不起我的英语不好或有任何错误
【问题讨论】:
【参考方案1】:你应该改用这个:
.pushNamedAndRemoveUntil(/* Your Route */, (Route<dynamic> route) => false)
【讨论】:
谢谢,它有效。所以当我们应该使用 . pushReplacementNamed ? 小记,我必须将构建上下文添加为第一个参数。 从颤振版本改变。我仍然没有在我的颤振版本中传递上下文@eimmer【参考方案2】:据我了解您的 UX 流程,用户将始终在应用启动时被定向到登录页面。如果用户已经登录,你应该避免导航到这个(在那一刻无用的)路线。而是尝试在构建方法中区分用户是否登录。如果用户已经登录,则构建主页。如果用户未登录,则构建登录页面。用户一登录,状态就会发生变化,主页就会建立起来。
// your stateful component
bool isLoggedIn;
@override
Widget build(BuildContext context)
if(isLoggedIn)
return _buildHomepage();
else
return _buildLoginPage();
Widget _buildHomepage()
// build your homepage
Widget _buildLoginPage()
// build your login page
【讨论】:
【参考方案3】:我今天遇到了这个问题,并遇到了您的帖子。 虽然 PushNamedAndRemoveUntil 有效,但我的解决方案更加简单:
确保您没有命名路线,这不是您的主屏幕“/”。
类似:
MaterialApp(
title: 'Flutter Demo',
initialRoute: Screen1.routeName, // routeName = "/route1"
routes:
Screen1.routeName: (ctx) => Screen1(), // routeName = "/route1"
Screen2.routeName: (ctx) => Screen2(), // routeName = "/"
Screen3.routeName: (ctx) => Screen3(), // routeName = "/screen2"
,
);
)
将使用 Screen1 启动您的应用程序,但将 Screen2 放在导航器堆栈的顶部。
【讨论】:
以上是关于Flutter Navigator.pushReplacementNamed 在页面显示返回按钮的主要内容,如果未能解决你的问题,请参考以下文章
[Flutter] flutter项目一直卡在 Running Gradle task 'assembleDebug'...
flutter 日志输出,Flutter打印日志,flutter log,flutter 真机日志
Flutter开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )
如何解决flutter gradle build error?C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 991