Windows环境运行旧Flutter项目遇flutter_localizations依赖冲突问题
旧Flutter项目依赖版本冲突解决方案
问题背景
在Windows设备运行旧Flutter项目时,flutter doctor检测无异常:
Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 3.10.5, on Microsoft Windows [Version 10.0.22621.1848], locale en-US) [√] Windows Version (Installed version of Windows is version 10 or higher) [√] Android toolchain - develop for Android devices (Android SDK version 33.0.2) [√] Chrome - develop for the web [√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.6.4) [√] Android Studio (version 2022.2) [√] VS Code (version 1.80.0) [√] Connected device (3 available) [√] Network resources • No issues found!
项目pubspec.yaml关键配置:
version: 1.0.3+8 publish_to: none environment: sdk: '>=2.12.0 <3.0.0' dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter ... intl: 0.17.0 ...
遇到的错误
- 首次执行
flutter pub get报错:
flutter pub get Resolving dependencies... Because psxmpc depends on flutter_localizations from sdk which depends on intl 0.18.0, intl 0.18.0 is required. So, because psxmpc depends on intl 0.17.0, version solving failed. exit code 1
原因:当前Flutter版本(3.10.5)的flutter_localizations依赖intl 0.18.0,但项目指定了intl 0.17.0,版本冲突。
- 将
intl升级到0.18.0后,再次执行flutter pub get报错:
[PSX-Multipurpose-Classified] flutter pub get Resolving dependencies... Because flutter_paystack >=1.0.5 depends on intl ^0.17.0 and psxmpc depends on intl 0.18.0, flutter_paystack >=1.0.5 is forbidden. So, because psxmpc depends on flutter_paystack 1.0.7, version solving failed. exit code 1
原因:flutter_paystack 1.0.7依赖intl ^0.17.0,与升级后的intl 0.18.0冲突。
解决方案
1. 降级Flutter版本适配旧项目
项目原本适配SDK <3.0.0,直接降级到对应兼容的Flutter版本:
- 执行命令:
flutter downgrade 2.10.5(选择与项目SDK范围匹配的稳定版) - 降级完成后执行
flutter pub get,依赖可正常解析。
2. 强制统一intl版本(依赖覆盖)
在pubspec.yaml中添加依赖覆盖,强制让flutter_paystack使用intl 0.18.0(注意需测试相关功能是否正常):
dependency_overrides: intl: 0.18.0
添加后执行flutter pub get,测试项目中flutter_paystack的支付功能是否正常运行。
3. 升级flutter_paystack到兼容版本
检查flutter_paystack是否有支持intl 0.18.0的更新版本,将项目依赖中的版本号替换为最新兼容版:
flutter_paystack: ^1.2.0 # 需确认实际兼容版本
执行flutter pub get完成依赖更新。
4. 调整项目SDK环境范围
修改pubspec.yaml中的SDK范围以适配当前Flutter版本(3.10.5要求SDK >=2.17.0):
environment: sdk: '>=2.17.0 <4.0.0'
同步升级其他依赖到兼容新版本SDK的版本,逐步解决冲突。
内容的提问来源于stack exchange,提问作者Amr Hassan
相关产品推荐
相关产品推荐

