Android Studio中Flutter执行pub get报错,依赖与Null Safety冲突求解决
Stackfood应用编译依赖报错解决方案
问题描述
解析依赖中...
当前Dart SDK版本为3.0.0-290.1.beta。由于universal_ui 0.0.8不支持null safety,且没有符合>0.0.8 <0.1.0的universal_ui版本,因此universal_ui ^0.0.8被禁止。
因此,由于efood_multivendor依赖universal_ui ^0.0.8,版本解析失败。要启用null safety,"sdk: '>=2.7.0 <3.0.0'"的下限必须为2.12.0或更高。
分步解决方案
方案1:降级Dart/Flutter版本适配旧依赖
- 打开终端,执行命令切换到稳定版并查看可用版本:
flutter channel stable && flutter versions - 选择支持Dart SDK
≥2.7.0 <3.0.0的版本(比如Flutter 2.10.5,对应Dart 2.16.2),执行降级命令:flutter downgrade 2.10.5 - 验证版本:
flutter --version,确认Dart版本处于2.7.0到3.0.0区间内 - 重新执行
flutter pub get,完成依赖解析后尝试编译
方案2:添加依赖覆盖强制兼容(风险提示:可能引发运行时错误)
- 打开项目根目录下的
pubspec.yaml文件 - 在文件末尾添加依赖覆盖规则:
dependency_overrides: universal_ui: ^0.0.8 - 同时修改
sdk约束为:sdk: '>=2.12.0 <3.0.0',开启null safety兼容模式 - 执行
flutter pub get,若出现警告可忽略,之后尝试编译;若运行时出现null相关错误,需手动修复universal_ui源码中的空安全问题
方案3:替换不兼容依赖(长期最优解)
- 寻找
universal_ui的替代跨平台UI组件库(如官方维护的UI组件或社区成熟库) - 修改
pubspec.yaml,调整efood_multivendor的依赖,移除对universal_ui的依赖并替换为新库 - 全局替换项目中所有使用
universal_ui的代码,适配新组件库的API - 执行
flutter pub get并编译测试
内容的提问来源于stack exchange,提问作者Alex Santos
相关产品推荐
相关产品推荐

