Flutter执行pub get遇依赖版本冲突求助(intl与month_year_picker)
错误信息
Resolving dependencies...
Because every version of month_year_picker depends on flutter_localizations from sdk which depends on intl 0.18.1, every version of month_year_picker requires intl 0.18.1.
So, because assingment depends on both intl ^0.17.0 and month_year_picker ^0.2.0+3, version solving failed.
Because month_year_picker <0.3.0+1 depends on intl ^0.17.0 and assingment depends on intl ^0.18.1, month_year_picker <0.3.0+1 is forbidden.
So, because assingment depends on month_year_picker ^0.2.0+3, version solving failed.
解决步骤
1. 升级month_year_picker到兼容版本
从错误信息可知,month_year_picker <0.3.0+1依赖intl ^0.17.0,与你当前使用的intl ^0.18.1冲突。修改pubspec.yaml中的依赖,升级到0.3.0+1及以上版本:
month_year_picker: ^0.3.0+1 # 或更高兼容版本
修改后执行flutter pub get,新版本已适配intl 0.18.1,可直接解决冲突。
2. 强制统一intl版本(临时方案)
若升级month_year_picker后仍有问题,或新版本不符合需求,可在pubspec.yaml中添加dependency_overrides强制指定intl版本:
dependency_overrides: intl: ^0.18.1
注意:此方法可能导致依赖intl旧版本的包出现潜在问题,仅确认所有依赖包兼容该版本时使用。
3. 排查其他依赖的intl版本需求
运行以下命令查看所有依赖包对intl的版本要求:
flutter pub deps --tree | grep intl
找出是否有其他包也依赖intl特定版本,针对性调整这些包的版本,确保所有依赖的intl版本范围有交集。
4. 清理缓存重试
执行以下命令清理Flutter缓存,避免缓存导致的依赖解析错误:
flutter clean flutter pub get
5. 降级Flutter SDK(极端情况)
若上述方法均无效,且必须使用旧版本的month_year_picker和intl,可考虑降级Flutter SDK到对应版本(如intl 0.17.0适配的Flutter版本),但此操作会限制SDK新特性,谨慎使用。
内容的提问来源于stack exchange,提问作者Suraj Maurya

