簡體   English   中英

Flutter ShellRoute 中的 go_router 參數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM