如何正确关闭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原生不支持空安全,无需额外配置:
- 进入本地Flutter SDK的安装目录,执行以下命令切换版本:
1.22.6是Flutter 2.0之前的最后一个稳定版本,对应Dart SDK 2.10.5,完全符合git checkout stable git reset --hard 1.22.6>=2.7.0 <3.0.0的SDK约束要求。 - 执行
flutter doctor等待SDK完成环境校验和编译适配。 - 回到项目根目录,重新执行
flutter pub get更新所有依赖即可。
注意:降级Flutter后部分仅支持2.0+版本的新插件将无法使用,你需要将这类插件替换为适配1.22.x版本的旧版本,或者自行修改插件源码适配低版本SDK。
内容的提问来源于stack exchange,提问作者loony fawn
相关产品推荐
相关产品推荐

