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

如何正确关闭Dart的null safety 降级Flutter适配无空安全旧项目

关闭Dart空安全+适配低版本SDK操作步骤

1. 调整项目SDK配置

直接修改项目根目录下的pubspec.yaml文件,找到environment节点,将SDK约束替换为你需要的版本:

environment:
  sdk: ">=2.7.0 <3.0.0"

修改完成后在项目根目录执行flutter pub get拉取适配该SDK范围的依赖,若出现依赖冲突,需要手动将冲突依赖降级到不强制要求空安全的历史版本。

2. 禁用空安全编译校验(不降级Flutter版本方案)

如果你使用的是Flutter 2.0及以上版本(默认搭载Dart 2.12+,默认开启空安全),需要在所有运行、编译命令后添加禁用参数:

  • 本地调试运行:flutter run --no-sound-null-safety
  • 安卓打包:flutter build apk --no-sound-null-safety
  • iOS打包:flutter build ios --no-sound-null-safety

如果使用IDE调试,可以配置默认运行参数避免每次手动输入:

  • VS Code:在.vscode/launch.json的configurations配置项中添加"args": ["--no-sound-null-safety"]
  • Android Studio:打开运行配置面板,在Additional run args字段填入--no-sound-null-safety

注意:该方案不需要修改全局Flutter版本,但所有编译/运行场景都必须携带参数,否则会触发空安全相关的编译错误

3. 降级Flutter版本彻底适配非空安全环境

如果不想每次都加运行参数,可以直接将Flutter版本降到2.0之前的稳定版,该版本搭载的Dart SDK原生不支持空安全,无需额外配置:

  1. 进入本地Flutter SDK的安装目录,执行以下命令切换版本:
    git checkout stable
    git reset --hard 1.22.6
    
    1.22.6是Flutter 2.0之前的最后一个稳定版本,对应Dart SDK 2.10.5,完全符合>=2.7.0 <3.0.0的SDK约束要求。
  2. 执行flutter doctor等待SDK完成环境校验和编译适配。
  3. 回到项目根目录,重新执行flutter pub get更新所有依赖即可。

注意:降级Flutter后部分仅支持2.0+版本的新插件将无法使用,你需要将这类插件替换为适配1.22.x版本的旧版本,或者自行修改插件源码适配低版本SDK。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:39:02