我有一个带有以下抽屉的flutter应用程序:
路线:
我要实现的行为是,当用户从附近和应用的屏幕上单击android后退按钮时,应用程序应将其带到主屏幕。如果他们再次从主屏幕按返回按钮,则会将他们带出应用程序。
只是在这里澄清他们是否去附近,然后应用,然后单击“后退”按钮,应将其带回家,而不应用。
这是我的代码,用于在选择附近和应用的抽屉项目时进行导航:
Navigator.pushNamedAndRemoveUntil(
context,
routeName,
ModalRoute.withName("/")
);
我希望这会在堆栈中保留以下路线:
但是当我点击android上的后退按钮时,我得到的是来自附近屏幕或应用屏幕,它使我退出了应用程序,而不是将我带到主屏幕。
我想念什么?如何实现所需的行为?
请注意,我知道有一种使用WillPopScope小部件的解决方案,但我正在寻找使用导航堆栈的解决方案。更重要的是,我有兴趣知道上述情况为何不起作用。
答案 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);