这意味着如果我从一个作业屏幕转到一个客户端屏幕(该作业用于的客户端(,再转到另一个作业屏(为客户端完成的另一项作业(等,我如何显示作业>客户端>工作
并且包括参数,这样我就可以显示作业12>SomeCompany>工作17。
子路由是不够的,因为堆栈可以无限地重复多个相同的页面。
我找到了一个依赖于内部API实现的解决方案
这可能在将来坏掉,所以要小心使用。
GoRouter.of(context).routerDelegate.currentConfiguration.matches
返回List<RouteMatch>
ⓘ初学者提示
确保在
GoRouter()
中正确配置了路由
希望它们在导航过程中嵌套,而不是成为兄弟姐妹。此外,请确保将整个URI位置字符串像
'/home/level-2/level-3'
一样提供给GoRouter.of(context).go()
这在go_router
中是不可能的auto_route
有一个API来检查堆栈,但go_router
没有显示stack
的搜索结果。
您可以使用扩展方法BuildContext#canPop
,而不是像这个答案中那样使用GoRouter.of
。例如,在我的入职页面中,如果可以,我可以弹出这个逻辑,如果不可能(第一次有人启动应用程序(,我会替换页面。:
if (context.canPop()) {
context.pop();
} else {
context.replace(Routes.dashboard);
// Or alternatively, allow the user to navigate back to onboarding with:
// context.push(Routes.dashboard);
}
我不确定是否要检查整个堆栈,但如果有人需要检查堆栈上是否有页面,GoRouter有一个canPop((方法:
/// Returns `true` if there is more than 1 page on the stack. bool canPop() => GoRouter.of(this).canPop();