我有一张带有PopupMenuButton的卡,可以点击以执行“复制”操作。我还可以从“卡详细信息”页面执行相同的操作。我要解决的问题是回到必须同时满足这两种路径的主页。因此,如果从详细信息页面执行该操作,则需要弹出两次以返回首页。
主页上的操作:
主页>添加卡页面
- navigator.pop()带我回到主页
详细信息页面上的操作:
主页>卡的详细信息页面>添加卡的页面
- 必须在这里弹出两次。
我知道我必须至少进行一次pop
,然后使用popUntil
检查路线的当前状态。由于某种原因,它总是弹出两次。
调试后,其当前路由显示为/
void _changeRoute(String newRouteName) {
bool isNewRoute = false;
// Pop once
Navigator.pop(context); // after this I should be on home page for the first path
Navigator.popUntil(context, (route) {
print('Current route is ${route.settings.name}');
if (route.settings.name == newRouteName) { // but this is showing current route as /
isNewRoute = true;
}
return true;
});
print('is home page: $isNewRoute');
if (!isNewRoute) {
Navigator.pop(context);
}
}
答案 0 :(得分:1)
我有这个工作。
我的问题是在我的主应用程序中,我在home
上指定了MaterialApp
属性。根据文档,如果指定了home
属性,它将采用路由/
。所以我的主页是/
,在我的路线中将其定义为/home
,而该页面已被/
覆盖。