我希望处理类似/?query=xxx
的url,并重定向到url /query/
,查询内容以extra
的形式传递
// Where should this code go ?
if (state.queryParams["code"] != null) {
context.goNamed('query', extra: state.queryParams["query"]);
}
...
GoRoute(
name: 'query',
path: '/query',
builder: (context, state) => QueryScreen(query: state.extra.toString()),
),
尝试在另一个GoRoute构建器中添加此条件逻辑时,应用程序在运行时中断,并显示错误No GoRouter found in context
GoRouter中的redirect
键预期返回一个字符串,因此似乎无法指定传递给屏幕小部件的额外变量。
有没有比 Package 我的StatelessWidget in a StatefulWidget wrapper更简单/更好的解决方案,它将在context.go
的initState方法中执行context.go
?
编辑:实际上,initState不能访问其上下文中的GoRouter和Navigator,尝试使用Timer或SchedulerBinding延迟重定向的执行不会改变任何东西。
1条答案
按热度按时间tv6aics11#
总结:
有两种方式
params
和queryParams
params
path = '/routeName/:id1/:id2'
queryParams
path = '/routeName'
解释:
1.使用
Params
如果要在
settings
路由中添加name
参数,路径参数应为/settings:name
。可以使用state.params["name"] variable
访问路由参数。将其定义为:
接收为:
2.使用
queryParams
您可以在
context.goNamed()
函数中访问queryParams
。queryParams
的最大优点是,您不必在路由路径中显式定义它们,可以使用state.queryParams
方法轻松访问它们。您可以添加各种用户相关数据作为查询参数。添加参数,如下所示
接收为:
有关在路由之间传递
object
的信息,请参阅https://stackoverflow.com/a/74813017/13431819。