Flutter AutoRoute执行build runner报Route must have either a page or a redirect destination错误
错误触发原因
- 核心原因是auto_router在解析路由配置时,判定某一条
AutoRoute既没有配置合法的page参数,也没有配置redirect跳转目标,触发了语法校验报错。结合你提供的代码,具体可能的诱因有3种:- 你配置的4个路由对应的页面类(SplashPage、SignInPage、NoteOverviewPage、TodoFormPage)没有添加
@RoutePage()注解,auto_router无法识别这些类为合法的路由页面,判定page参数无效。 - 页面类导入路径错误,或者导入了其他同名非页面类,导致
page参数指向的类不生效。 - 你配置的
todoFormRouter的name属性为小驼峰格式,不符合auto_router要求的大驼峰命名规范,部分版本会触发路由解析异常,判定配置不合法。
- 你配置的4个路由对应的页面类(SplashPage、SignInPage、NoteOverviewPage、TodoFormPage)没有添加
修复方案
- 给所有路由对应的页面类顶部添加
@RoutePage()注解,示例如下:
import 'package:auto_route/auto_route.dart'; // 每个Page类都要加该注解 @RoutePage() class TodoFormPage extends StatelessWidget { // 原有页面逻辑不变 }
- 检查所有
page参数对应的页面类导入路径,确认没有导入错误。 - 修正
todoFormRouter的命名为大驼峰格式:
AutoRoute( path: 'todoFormPage', name: 'TodoFormRouter', // 首字母大写,改为大驼峰 page: TodoFormPage, ),
- 清理构建缓存后重新执行编译命令:
# 清理旧的构建产物 flutter packages pub run build_runner clean # 重新生成路由代码 flutter packages pub run build_runner build --delete-conflicting-outputs
内容的提问来源于stack exchange,提问作者ahmad heydarpanah
相关产品推荐
相关产品推荐

