颤振导航回到主屏幕

时间:2020-06-03 15:46:11

标签: flutter routes navigation

我有一个带有以下抽屉的flutter应用程序:

navigation drawer

路线:

  1. 首页:“ /”
  2. 附近:“ /附近”
  3. 已应用:“ /已应用”

我要实现的行为是,当用户从附近和应用的屏幕上单击android后退按钮时,应用程序应将其带到主屏幕。如果他们再次从主屏幕按返回按钮,则会将他们带出应用程序。

只是在这里澄清他们是否去附近,然后应用,然后单击“后退”按钮,应将其带回家,而不应用。

这是我的代码,用于在选择附近和应用的抽屉项目时进行导航:

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

我希望这会在堆栈中保留以下路线:

  1. 所选页面

但是当我点击android上的后退按钮时,我得到的是来自附近屏幕或应用屏幕,它使我退出了应用程序,而不是将我带到主屏幕。

我想念什么?如何实现所需的行为?

请注意,我知道有一种使用WillPopScope小部件的解决方案,但我正在寻找使用导航堆栈的解决方案。更重要的是,我有兴趣知道上述情况为何不起作用。

2 个答案:

答案 0 :(得分:0)

在NearBy中添加此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)

答案 1 :(得分:-1)

它将重定向到所需的页面,此处'/'用于主页。您可以在其中使用所需的页面路线。所有剩余的页面将从“队列”中删除,以便后退按钮不会再次呈现上一页。

Navigator.of(context).pushNamedAndRemoveUntil('/', (Route<dynamic> route) => false);