Flutter中安装excel ^1.1.5版本遭遇依赖冲突问题求助
Flutter项目依赖版本冲突问题排查与解决
最近我在给我的Flutter项目etf安装excel: ^1.1.5包的时候,碰上个头疼的版本冲突问题,pub get直接跑失败了,仔细看错误日志才搞清楚是依赖链的版本矛盾导致的,具体冲突逻辑如下:
冲突根源拆解
excel: ^1.1.5属于excel >=1.0.4 <2.0.0-null-safety版本区间,它依赖xml ^4.1.0,而xml ^4.1.0又要求convert ^2.1.0,所以excel包必须使用convert ^2.1.0- 但我的项目同时依赖
invoiceninja: ^0.0.9,这个包依赖json_serializable ^4.1.0;而json_serializable >=4.0.3又依赖build ^2.0.0,build ^2.0.0要求的是convert ^3.0.0 - 这就造成了
convert包的版本要求完全矛盾:一边要^2.1.0,另一边要^3.0.0,两者无法同时满足,最终导致版本解析失败
可行的解决办法
根据这个冲突逻辑,我整理了几个可行的解决方向:
- 升级
excel到空安全版本:优先推荐这个方案,excel包的>=2.0.0版本已经支持空安全,大概率适配了convert ^3.0.0,能和invoiceninja: ^0.0.9的依赖链兼容。修改pubspec.yaml里的依赖:excel: ^2.0.0 # 可以去pub.dev查看最新的稳定版本号 - 降级相关依赖版本:如果暂时不想升级
excel,可以尝试降级json_serializable到<=4.0.2(这个版本不依赖build ^2.0.0),或者看看invoiceninja有没有更低版本不依赖高版本json_serializable的。修改示例:
不过这种方法可能引发其他依赖问题,需要仔细测试功能。json_serializable: ^4.0.2 invoiceninja: ^0.0.9 - 使用依赖强制覆盖:如果前两种方法都走不通,可以在
pubspec.yaml里添加dependency_overrides,强制所有依赖使用同一个convert版本(比如^3.0.0),但这种方法可能会导致excel包出现兼容性问题,一定要充分测试所有相关功能:dependency_overrides: convert: ^3.0.0
我的环境信息
Flutter(Channel dev,2.11.0-0.1.pre,运行于Microsoft Windows [版本10.0.18363.418],区域设置en-US)
内容的提问来源于stack exchange,提问作者Fahad Mustafa




