You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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();
}

后续操作

  1. 清理旧的生成文件:
flutter packages pub run build_runner clean
  1. 重新运行生成命令:
flutter packages pub run build_runner watch

此时生成的StoryRoute代码将不再包含key参数,也不会出现Key未定义的错误。

内容的提问来源于stack exchange,提问作者V.Tur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:53:18