如何在GoRoute构建器外通过go_router获取当前路由的queryParams?
在GoRoute构建器之外获取go_router的query参数
要在GoRoute构建器之外获取当前路由的queryParams,有两种常用方式:
有Context的场景
直接通过GoRouter.of(context)获取路由实例,再从路由信息提供者中提取URI的查询参数:
// 获取当前路由的query参数集合 final queryParams = GoRouter.of(context).routeInformationProvider.value.uri.queryParameters;
比如当前路径是/product/10110?name=phone&sku=10110,queryParams就会返回{'name': 'phone', 'sku': '10110'}。
无Context的场景(如全局服务、工具类)
如果需要在没有BuildContext的地方获取参数,可以提前把GoRouter实例全局存储:
- 初始化时创建全局的GoRouter实例:
// 全局变量或注入到依赖管理中 final appRouter = GoRouter( routes: [ // 你的路由配置 GoRoute(path: '/product/:id', builder: (context, state) => ProductPage()), ], );
- 在任意地方直接调用:
final queryParams = appRouter.routeInformationProvider.value.uri.queryParameters;
另外,routeInformationProvider.value.uri还包含了完整的路由URI信息,你可以通过它获取路径、片段等其他路由相关数据。
内容的提问来源于stack exchange,提问作者Aristidios
相关产品推荐
相关产品推荐

