Flutter项目中razorpay_flutter 1.3.4与package_info_plus 4.0.1兼容问题求助
我在Flutter项目中使用razorpay_flutter 1.3.4与package_info_plus 1.4.3+1时运行正常,但升级package_info_plus到4.0.1后,执行flutter pub get出现依赖解析错误:
flutter pub get Resolving dependencies... Because razorpay_flutter 1.3.4 depends on package_info_plus ^1.3.0 and no versions of razorpay_flutter match >1.3.4 <2.0.0, razorpay_flutter ^1.3.4 requires package_info_plus ^1.3.0. So, because my_project depends on both razorpay_flutter ^1.3.4 and package_info_plus ^4.0.1, version solving failed. exit code 1
已经试过flutter doctor检查、flutter clean清理及重新拉取依赖,问题仍存在。该兼容性问题在razorpay_flutter仓库已有公开issue但长期未修复,以下是可行的解决思路:
升级razorpay_flutter到兼容版本
查razorpay_flutter的最新版本,看它的pubspec有没有更新package_info_plus的依赖约束。如果有2.x及以上版本支持package_info_plus 4.x,直接在pubspec.yaml里把razorpay_flutter的版本号改成最新兼容版,比如:dependencies: razorpay_flutter: ^2.0.0 # 请确认实际兼容版本 package_info_plus: ^4.0.1注意:大版本升级可能有API变动,得对照官方文档调整代码。
用dependency_overrides强制兼容
在pubspec.yaml里加dependency_overrides,强制让razorpay_flutter用package_info_plus 4.0.1:dependency_overrides: package_info_plus: ^4.0.1这方法有风险,因为不同版本的package_info_plus可能有API差异,可能导致razorpay_flutter运行出错。一定要测试核心支付流程,确认没崩溃或功能异常。
fork razorpay_flutter仓库改依赖约束
- 把razorpay_flutter的GitHub仓库克隆到本地
- 修改仓库里
pubspec.yaml的package_info_plus依赖为^4.0.1 - 把修改后的仓库推到自己的GitHub账号
- 在项目的
pubspec.yaml里引用自己fork的仓库:
dependencies: razorpay_flutter: git: url: https://github.com/your-username/razorpay-flutter.git ref: main # 对应你修改后的分支名 package_info_plus: ^4.0.1这方法能完全控制依赖版本,但得自己维护fork的仓库,原仓库更新时要同步代码。
回退package_info_plus到兼容版本
如果暂时不需要package_info_plus 4.x的新特性,把它的版本回退到razorpay_flutter 1.3.4支持的范围,比如^1.4.3+1,这样依赖解析就能正常通过:dependencies: razorpay_flutter: ^1.3.4 package_info_plus: ^1.4.3+1
内容的提问来源于stack exchange,提问作者Pawan Joshi

