Flutter Go_router,保存路线历史

qv7cva1a  于 2023-01-18  发布在  Flutter
关注(0)|答案(1)|浏览(160)

我有这个路由器的代码

final _router = GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (BuildContext context, GoRouterState state) {
        return const LoginScreenWidget();
      },
      routes: <RouteBase>[
        GoRoute(
          path: 'main',
          builder: (BuildContext context, GoRouterState state) {
            return const MainScreenWidget();
          },
          routes: [
            GoRoute(
              path: 'my-friends',
              builder: (BuildContext context, GoRouterState state) {
                return const FriendsScreenWidget();
              },
              routes: [
                GoRoute(
                  path: ':userId',
                  builder: (BuildContext context, GoRouterState state) {
                    return FriendProfileScreenWidget(
                      userId: state.params['userId'],
                    );
                  },
                  routes: [
                    GoRoute(
                      path: 'friends',
                      builder: (BuildContext context, GoRouterState state) {
                        return ProfileFriendsScreenWidget();
                      },
                    ),
                  ],
                ),
              ],
            ),
          ],
        ),
      ],
    ),
  ],
);

class AppRouterDelegate extends GetDelegate {
  @override
  Widget build(BuildContext context) {
    return Navigator(
      onPopPage: (route, result) => route.didPop(result),
      pages: currentConfiguration != null
          ? [currentConfiguration!.currentPage!]
          : [GetNavConfig.fromRoute('main')!.currentPage!],
    );
  }
}

在不同的屏幕上,我越走越深。它按照我需要的方式工作。但当我点击后退时,我并没有在历史中后退,而是回到了起点
x一个一个一个一个一个x一个一个二个一个x一个一个三个一个x一个x一个x一个x一个x一个x一个
我怎样才能使它在我们点击后退时,返回到上一页,而不是最初的一页?
后退按钮具有此代码

Navigator.pop(context);

一开始我试着用普通的Navigator,然后用Navigator 2.0,但是不行,然后我找到了这个go路由器,我很喜欢,但是我解决不了最后一个问题

jq6vz3qz

jq6vz3qz1#

使用context.push('routeName ')而不是context.go('routeName')。这样应该可以解决问题。

相关问题