![](/img/trans.png)
[英]Flutter go_router: how to use ShellRoute with an expanded child?
[英]Flutter go_router parameters within ShellRoute not working
我正在使用go_router並且需要設置一個ShellRoute
。 到目前為止它工作正常。 現在ShellRoute
中的一條routes
應該有一條帶有params
的路線。 而且我無法讓它工作..
這是我的設置:
final rootNavigatorKey = GlobalKey<NavigatorState>();
class AppRouter {
static final _shellNavigatorKey = GlobalKey<NavigatorState>();
static final router = GoRouter(
initialLocation: IntroView.path,
debugLogDiagnostics: true,
navigatorKey: rootNavigatorKey,
routes: [
ShellRoute(
navigatorKey: _shellNavigatorKey,
pageBuilder: (context, state, child) {
return NoTransitionPage(
child: ScaffoldView(
initLocation: state.location,
child: child,
),
);
},
routes: [
GoRoute(
name: ProjectsView.name,
path: ProjectsView.path,
parentNavigatorKey: _shellNavigatorKey,
pageBuilder: (context, state) {
return const FadePageTransition(
page: ProjectsView(),
);
},
routes: [
GoRoute(
parentNavigatorKey: rootNavigatorKey,
path: 'projects/:projectTitle',
pageBuilder: (context, state) {
return FadePageTransition(
page: ProjectDetailScaffold(
project: Projects.values.byName(
state.params['projectTitle']!,
),
),
);
},
),
],
),
...
我正在嘗試像這樣push
送到ProjectDetailScaffold
:
rootNavigatorKey.currentContext!.push(
'/projects/wishlists',
);
但是我得到一個error
,指出/projects/wishlists
不存在路由 ...
我在這里錯過了什么?
如果您需要更多信息,請告訴我。
我自己弄明白了:
問題是我指定的子path
錯誤。 當我只需要添加:projectTitle
時,我也添加了它的父路徑。 這是工作解決方案:
GoRoute(
parentNavigatorKey: rootNavigatorKey,
path: ':projectTitle',
pageBuilder: (context, state) {
return FadePageTransition(
page: ProjectDetailScaffold(
project: Projects.values.byName(
state.params['projectTitle']!,
),
),
);
},
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.