我的
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 时设计的吗?如果没有,有人可以帮我重构这个吗?
提前致谢!
这个问题已经发布不久了,但我还是想回答一下。也许对其他人有帮助。 您可以直接将初始路由设置为GoRouter的属性。 您检查重定向后将导航至基本路线。 如果您直接设置 GoRouter 的初始路由属性并删除检查,您的问题就解决了。