使用go_router(Flutter)的嵌套页面子路由

jv4diomz  于 2023-04-22  发布在  Flutter
关注(0)|答案(1)|浏览(348)

我的应用程序结构可以是这样的:

home/folder/:fid/player
home/folder/:fid/folder/:fid/player
home/folder/:fid/folder/:fid/folder/:fid/player

具有可以打开其他文件夹的嵌套文件夹(文件夹可以包含在播放器中播放的音频文件)等
这是可能的去路由器?我已经尝试这样做,而不是:

home/folder/:fid/folder2/:f2id/player

但它变得非常混乱。我的路由器目前看起来像这样

final router = GoRouter(
      routes: [
        GoRoute(
            path: HomePath,
            builder: (context, state) => HomeWrapperWidget(),
            routes: [
              GoRoute(
                path: 'session/:sid',
                routes: [
                  GoRoute(
                    path: 'player',
                    pageBuilder: (context, state) =>
                        getPlayerMaterialPage(state),
                  )
                ],
                pageBuilder: (context, state) =>
                    getSessionOptionsMaterialPage(state),
              ),
              GoRoute(
                path: 'folder/:fid',
                routes: [
                  GoRoute(
                    path: 'folder2/:f2id',
                    routes: [
                      GoRoute(
                        path: 'folder3/:f3id',
                        pageBuilder: (context, state) => getFolderMaterialPage(state),
                      ),
                    ],
                    pageBuilder: (context, state) =>
                        getFolderMaterialPage(state),
                  ),
                ],
                pageBuilder: (context, state) => getFolderMaterialPage(state),
              ),
              ...
            ]),
      ],
    );
tjrkku2a

tjrkku2a1#

它可能只是“基于意见”,不是一个很好的适合一个网站,但我认为这样的事情不应该做的路由器。
路由器用于页面之间的导航。应用程序应该只有一个页面(路由)folder,它接受参数fid,并根据其值显示文件系统中特定文件夹的内容。
应该创建一个fids堆栈,而不是依赖于go_router堆栈。

相关问题