Flutter 导航返回主屏幕
Posted
技术标签:
【中文标题】Flutter 导航返回主屏幕【英文标题】:Flutter navigation back to home screen 【发布时间】:2020-09-22 09:35:17 【问题描述】:我有一个具有以下抽屉的颤振应用程序:
路线:
-
首页:“/”
附近:“/附近”
已应用:“/applied”
我想要实现的行为是当用户从附近和应用的屏幕单击 android 后退按钮时,应用程序应将它们带到主屏幕。如果他们再次按下主屏幕上的返回按钮,则会将他们从应用程序中移除。
在这里澄清一下,如果他们去附近,然后申请,然后点击返回按钮,它应该带他们回家,而不是申请。
这是我在选择附近和应用的抽屉项目时导航的代码:
Navigator.pushNamedAndRemoveUntil(
context,
routeName,
ModalRoute.withName("/")
);
我希望这会在堆栈中留下以下路由:
-
首页
所选页面
但是当我点击 android 上的后退按钮时,我得到的是来自附近或应用的屏幕,它会将我带出应用程序,而不是让我回到主屏幕。
我错过了什么?如何实现我正在寻找的行为?
请注意,我知道有一个使用 WillPopScope 小部件的解决方案,但我正在寻找一个使用导航堆栈的解决方案。更重要的是,我很想知道为什么上述情况不起作用。
【问题讨论】:
【参考方案1】:在 NearBy 和 Apply 小部件中添加这个 WllPopCallBack()。
Future<bool> _willPopCallback() async
Navigator.pushNamedAndRemoveUntil(
context,
routeName,
ModalRoute.withName("/")
);
return false; // return true if the route to be popped
在 NearBy 的 Scaffold() 上添加这个 WllPopScope 小部件,并像这样应用小部件:
new WillPopScope(child: new Scaffold(), onWillPop: _willPopCallback)
【讨论】:
感谢您的回答。我希望不必使用 WillPopScope。我认为 Flutter 有一个用于此目的的导航堆栈,并希望使用它,并且会理解为什么 pushNamedAndRemoveUntil() 在上述情况下无法正常工作。我会更新我的帖子。以上是关于Flutter 导航返回主屏幕的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 Box not Found 错误 Hive Flutter