Flutter Firebase项目中Dart SDK版本与依赖包冲突问题求助
解决Flutter与Firebase Messaging依赖版本冲突问题
你这明显是踩了版本兼容性的坑——我来帮你理清楚问题根源,再给你两个可行的解决办法:
问题核心
你现在用的是Flutter 1.22.2稳定版,这个版本对应的Dart SDK是2.10.2,还不支持空安全特性。但你依赖的firebase_messaging: ^9.0.0是Firebase推出的空安全版本,它硬性要求Dart SDK必须在>=2.12.0-0 <3.0.0范围内,两者的版本要求完全不匹配,自然导致pub get执行失败。
解决方案(二选一)
方案1:升级Flutter到支持空安全的稳定版(推荐)
Firebase 9.x系列已经全面适配空安全,而Flutter 2.0及以上版本才正式支持空安全,从长期维护的角度来说,升级是最优选择:
- 打开终端,先确保在稳定频道(避免升级到不稳定的开发版):
flutter channel stable - 执行升级命令:
flutter upgrade - 升级完成后,运行
flutter doctor确认所有环境配置正常 - 最后重新执行
flutter pub get,依赖就能正常解析了
方案2:降级Firebase依赖到兼容旧Dart版本的版本
如果暂时不想升级Flutter,可以把Firebase相关依赖都降级到非空安全的8.x系列,适配你的Dart 2.10.2:
- 修改
pubspec.yaml中的依赖配置:dependencies: firebase_analytics: ^6.3.0 firebase_core: ^0.7.0 firebase_crashlytics: ^0.4.0+1 firebase_messaging: ^8.1.1注意:所有Firebase依赖要同步降级,单独降级某一个很可能会引发新的兼容性冲突
- 保存文件后,执行
flutter pub get即可
额外提醒
Firebase从9.x版本开始就全面转向空安全架构,后续的功能更新和Bug修复都会基于这个标准。如果你的项目需要长期维护,还是更推荐方案1升级Flutter,这样能更好地适配未来的Firebase迭代。
内容的提问来源于stack exchange,提问作者Kaya Ryuuna
相关产品推荐
相关产品推荐

