如何摆脱总是在导航之间调用 GoRouter 初始路由构建器方法

问题描述 投票:0回答:1

我的

app_router.dart
看起来像这样

GoRoute(
      path: '/',
      name: AppRoute.todoList.name,
      redirect: (context, state) async {
        var initialRoute = await getInitialRoute();
        return initialRoute != AppRoute.todoList.name ? "/$initialRoute" : null;
      },
      builder: (context, state) => TodoListScreen(),
      routes: [
        GoRoute(
            path: 'add',
            name: AppRoute.todoAdd.name,
            builder: (context, state) => TodoAddScreen()),
        GoRoute(
            path: 'edit/:id',
            name: AppRoute.todoEdit.name,
            builder: (context, state) {
              final todoId = state.pathParameters['id']!;
              return TodoEditScreen(todoId: int.parse(todoId));
            })
        ]
    )

我遇到的问题是,每当我导航到

add
edit
时,
TodoListScreen()
都会再次构建其整个小部件树(在构建添加、编辑小部件树之后)。 IE。它再次构建 TodoListScreen 小部件,即使我导航到
add
edit
的子小部件,它也会这样做,这给我带来了数据保留方面的问题。

AppRoute 只是一个枚举

这是使用 goRouter 时设计的吗?如果没有,有人可以帮我重构这个吗?

提前致谢!

flutter flutter-navigation flutter-go-router
1个回答
0
投票

这个问题已经发布不久了,但我还是想回答一下。也许对其他人有帮助。 您可以直接将初始路由设置为GoRouter的属性。 您检查重定向后将导航至基本路线。 如果您直接设置 GoRouter 的初始路由属性并删除检查,您的问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.