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

Dart编译报错:空安全模式NonNullableByDefaultCompiledMode.Invalid不支持

Dart空安全编译报错排查方案

问题核心表现

编译Dart应用时直接失败,编译器异常退出,核心报错特征如下:

  • 明确提示以下依赖包未适配空安全:
    • package:provider_mvc
    • package:provider
  • 抛出未处理异常:Bad state: Unsupported Null Safety mode NonNullableByDefaultCompiledMode.Invalid, in null.
  • 异常栈指向dev_compiler、frontend_server相关的编译模块,最终提示编译流程中断。

解决步骤

  • 优先升级依赖适配空安全
    打开项目根目录的pubspec.yaml,确认当前SDK约束:如果sdk版本下限大于等于2.12.0,说明项目默认开启健全空安全机制,此时老版本未适配空安全的依赖就会触发报错。
    执行以下命令升级所有依赖到最新稳定版:

    # Flutter项目执行
    flutter pub upgrade
    # 纯Dart项目执行
    dart pub upgrade
    

    升级完成后执行pub outdated检查,确认provider、provider_mvc的版本已经支持空安全后,重新执行编译即可。

  • 依赖无空安全适配版本时,使用非健全空安全模式编译
    如果provider_mvc等依赖已经停止维护、没有推出适配空安全的正式版本,可以在编译/运行命令中追加参数,关闭健全空安全校验:

    # 运行调试
    flutter run --no-sound-null-safety
    # 打包编译(以web端为例,其他端打包同理追加参数)
    flutter build web --no-sound-null-safety
    

    如果是通过VSCode、Android Studio等IDE直接点击运行/调试按钮,需要在对应运行配置的「额外编译参数」项中添加--no-sound-null-safety,避免IDE默认使用健全空安全模式编译。

  • 参数配置后仍报错的清理操作
    如果追加参数后依然触发相同报错,按以下步骤清理缓存重置编译环境:

    • 关闭所有正在运行的Dart、Flutter进程
    • 执行flutter clean(纯Dart项目执行dart pub cache repair)
    • 删除项目根目录下的.dart_tool文件夹、pubspec.lock文件
    • 重新执行pub get拉取依赖,再用带非健全空安全参数的命令重新编译即可。

注意:非健全空安全是兼容老依赖的临时方案,后续如果相关依赖推出空安全适配版本,建议尽快升级依赖、移除编译参数,切回健全空安全模式获得更可靠的类型校验能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:06:23