Flutter auto_route中super.key导致build_runner生成代码报错求助
解决AutoRoute生成路由时Key未定义及排除Key参数的问题
问题原因
AutoRoute默认会将Widget构造函数的所有参数(包括super.key)纳入路由参数生成逻辑,但生成的auto_router.gr.dart文件未自动导入Flutter的Key类,导致出现Undefined class 'Key'错误;同时key属于框架自动处理的参数,不需要作为路由跳转时的传递参数。
解决方案
使用AutoRoute提供的@excludeParam注解标记key参数,让代码生成器排除该参数:
修改StoryView的构造函数代码:
@RoutePage() class StoryView extends StatefulWidget { const StoryView({ @excludeParam super.key, @pathParam required this.storyName }); final String storyName; @override State<StoryView> createState() => _StoryViewState(); }
后续操作
- 清理旧的生成文件:
flutter packages pub run build_runner clean
- 重新运行生成命令:
flutter packages pub run build_runner watch
此时生成的StoryRoute代码将不再包含key参数,也不会出现Key未定义的错误。
内容的提问来源于stack exchange,提问作者V.Tur
相关产品推荐
相关产品推荐

