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

Flutter执行build_runner命令报非空特性错误及无限循环问题求解

Flutter build_runner 空安全相关报错解决方案

报错原因梳理

第一次报错原因

初始配置下Dart SDK版本下限低于2.12,默认未开启空安全特性,但项目中引入的json_serializable等代码生成器依赖版本要求使用空安全,因此触发特性不匹配报错,同时导致构建进程进入死循环无法结束。

修改SDK版本后报错原因

将SDK约束调整为>=2.12.0 <3.0.0后默认开启健全空安全,但项目中引入的build_runner、json_serializable、retrofit_generator等依赖版本过低,本身不支持空安全,因此触发空安全兼容报错。

具体解决步骤

  • 第一步:清理本地缓存与旧构建产物
    依次执行以下命令:
    flutter clean
    rm -rf .dart_tool
    
  • 第二步:升级所有代码生成相关依赖到支持空安全的版本
    在pubspec.yaml中更新对应依赖的版本号,参考版本如下:
    dependencies:
      json_annotation: ^4.8.1
      retrofit: ^4.0.1
    
    dev_dependencies:
      build_runner: ^2.4.8
      json_serializable: ^6.7.1
      retrofit_generator: ^7.0.8
    
    所有涉及代码生成的依赖都需要升级到适配空安全的版本,避免版本冲突。
  • 第三步:重新拉取项目依赖
    执行命令:
    flutter pub get
    
  • 第四步:执行代码生成命令
    建议添加--delete-conflicting-outputs参数自动覆盖冲突的生成文件:
    flutter pub run build_runner build --delete-conflicting-outputs
    
    如果仍有个别依赖无法适配空安全,可添加禁用健全空安全的参数运行:
    flutter pub run build_runner build --delete-conflicting-outputs --no-sound-null-safety
    

如果升级后出现依赖版本兼容问题,可在pubspec.yaml中添加dependency_overrides字段强制指定统一的兼容版本号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:45:01