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

Spe*_*eed 7 flutter flutter-navigation

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

home/folder/:fid/player
home/folder/:fid/folder/:fid/player
home/folder/:fid/folder/:fid/folder/:fid/player
Run Code Online (Sandbox Code Playgroud)

具有可以打开其他文件夹的嵌套文件夹(文件夹可以包含在播放器中播放的音频文件)等

这可以用 go router 实现吗?我尝试做这样的事情:

home/folder/:fid/folder2/:f2id/player
Run Code Online (Sandbox Code Playgroud)

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

 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),
              ),
              ...
            ]),
      ],
    );
Run Code Online (Sandbox Code Playgroud)

yur*_*rin 0

它可能只是“基于意见”,不太适合站点,但我认为这样的事情不应该用路由器来完成。

路由器用于页面之间的导航。应用程序应该有唯一一个页面(路由)folder接受该参数fid并根据其值显示文件系统中特定文件夹的内容。

不应依赖路由堆栈,而应创建go_router路由堆栈。fids