Flutter go_router,如何获取当前的整个页面堆栈



这意味着如果我从一个作业屏幕转到一个客户端屏幕(该作业用于的客户端(,再转到另一个作业屏(为客户端完成的另一项作业(等,我如何显示作业>客户端>工作

并且包括参数,这样我就可以显示作业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();

相关内容

  • 没有找到相关文章

最新更新