You need to enable JavaScript to run this app. Flutter执行build_runner命令时报Generator无法指向未迁移空安全库错误
优惠活动
大模型
产品
解决方案
定价
更多

Flutter执行build_runner命令时报Generator无法指向未迁移空安全库错误

flutter pub run build_runner 空安全校验报错解决

根因定位

你当前配置的 json_serializable: ^4.0.2 版本对生成目标代码有强制空安全要求,扫描到 lib/models/shipping_address/shipping_address.dart 中的 ShippingAddress 类仍为非空安全语法,直接触发了构建阻断。
结合你当前的Dart 2.12.0版本信息,这个报错本质是依赖版本和代码适配程度不匹配,不是构建工具本身的问题。

具体修复操作

  • 选择一:给目标类补全空安全语法
    打开报错指向的源文件,按Dart空安全规则调整类定义:
    1. 把不可为空的字段声明为非空类型,在构造函数中用 required 标记必传参数
    2. 把允许为空的字段在类型后加 ? 标记可空
    3. 保留类上的 @JsonSerializable() 注解,不要删除生成器识别标记
      调整完成后重新执行构建命令,即可跳过空安全校验完成代码生成。
  • 选择二:降级到兼容非空安全的依赖版本
    如果暂时不计划迁移项目整体空安全,可修改 pubspec.yaml 中的dev依赖配置:
    将原本的 json_serializable: ^4.0.2 替换为 json_serializable: ^3.5.0,这是官方最后一个支持非空安全项目的稳定大版本。
    配置修改完成后依次执行:
    1. 运行 flutter pub get 拉取匹配版本的依赖
    2. 重新执行 flutter pub run build_runner build --delete-conflicting-outputs 完成构建
  • 注意事项
    降级依赖后要保证 json_annotation 和 json_serializable 版本匹配,不要出现4.x版本的json_annotation搭配3.x版本的json_serializable的错配情况,否则会触发新的依赖冲突报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 03:24:04