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

Flutter使用Freezed新增类属性后build_runner构建失败如何解决

问题根因

这个报错是analyzer v0.41.2和meta v1.7.0版本不兼容导致:两个包都对TargetKind类型扩展了同名的displayString属性,作用域内无法判定优先使用哪一个;同时旧版本analyzer依赖的collection包没有内置commaSeparatedWithOr扩展方法,进而触发第二个报错。

解决方案

步骤1:处理依赖冲突

在项目的pubspec.yaml文件中添加依赖覆盖规则,强制使用兼容的包版本:

dependency_overrides:
  meta: 1.6.0

如果上面的配置仍然报错,可以同时锁定analyzer版本:

dependency_overrides:
  meta: 1.6.0
  analyzer: 1.7.1

步骤2:修复Freezed类代码问题

你新增的age、updateAt、createAt三个属性没有标记可空也没有设置默认值,如果项目开启了空安全,后续生成代码会触发空类型报错,你可以按需选择以下两种修改方式:

  • 标记为可空类型:
    int? age,
    @DateTimeConverter() DateTime? updateAt,
    @DateTimeConverter() DateTime? createAt,
    
  • 补充@Default注解设置默认值:
    @Default(0) int age,
    @DateTimeConverter() @Default(DateTime.now()) DateTime updateAt,
    @DateTimeConverter() @Default(DateTime.now()) DateTime createAt,
    

步骤3:重新执行构建命令

修改完成后执行以下命令重新构建:

flutter clean && flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs

内容的提问来源于stack exchange,提问作者Aspas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:54:03