Flutter导航返回主屏幕

3
我有一个Flutter应用程序,其中包含以下抽屉:

navigation drawer

路由:

  1. 首页:"/"
  2. 附近:"/nearby"
  3. 申请:"/applied"

我想要实现的行为是,当用户从“附近”和“申请”屏幕点击安卓返回按钮时,应用程序应将他们带回到主屏幕。如果他们再次从主屏幕按下返回按钮,则将他们从应用中退出。

在这里需要澄清的是,如果他们进入了“附近”,然后进入“申请”,然后点击了返回按钮,它应该把他们带回到主页,而不是“申请”。

以下是我导航到“附近”和“申请”抽屉项时的代码:

Navigator.pushNamedAndRemoveUntil(
    context, 
    routeName, 
    ModalRoute.withName("/")
);

我原本期望堆栈中会有以下路由:
  1. 主页
  2. 选定页面
但实际上,当我在 Android 上点击返回按钮时,它会带我离开应用程序,而不是回到主屏幕或选定页面。
我错过了什么?如何达到我想要的行为?
请注意,我知道可以使用 WillPopScope 小部件来解决此问题,但我正在寻找使用导航堆栈的解决方案。更重要的是,我想知道为什么上述情况无法正常工作。
2个回答

4
Navigator.of(context).popUntil((route) => route.isFirst); 导航器.从(context).弹出直到((路由) => 路由.isFirst);

2
在NearBy和Apply小部件中添加WllPopCallBack()。
Future<bool> _willPopCallback() async {
     Navigator.pushNamedAndRemoveUntil(
    context, 
    routeName, 
    ModalRoute.withName("/")
);
    return false; // return true if the route to be popped
}

将此WllPopScope小部件添加到NearBy和Apply小部件的Scaffold()上,如下所示:
new WillPopScope(child: new Scaffold(), onWillPop: _willPopCallback)

谢谢你的回答。我希望不必使用WillPopScope。我认为Flutter有一个导航堆栈来实现这个目的,我想使用它,同时也能理解为什么pushNamedAndRemoveUntil()在上述情况下不能按照我预期的工作。我会更新我的帖子。 - Kayes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接