Flutter项目添加firebase_dynamic_links出现依赖版本冲突报错如何解决
依赖冲突根因
冲突核心是两个第三方包依赖的plugin_platform_interface版本范围不兼容:
- 你引入的
firebase_dynamic_links: ^2.0.6依赖firebase_core ^1.3.0,最终要求plugin_platform_interface ^2.0.0 - 项目原有
permission_handler: ^5.1.0+2依赖的平台接口包仅支持plugin_platform_interface ^1.0.2
两者版本范围无交集,因此版本求解失败。
解决方案
按照优先度从高到低排序:
- 方案1:升级
permission_handler到兼容版本permission_handler从6.0.0版本开始适配了plugin_platform_interface ^2.0.0,直接将pubspec.yaml中permission_handler的版本约束修改为^6.0.0(可根据需求选择更高的稳定版本,如^10.2.0)即可解决冲突。
注意:如果项目中已有调用permission_handler的旧代码,需要适配6.0+版本的API变动,比如部分权限枚举名称调整。
修改示例:permission_handler: ^6.1.3 - 方案2:降级
firebase_dynamic_links到兼容版本
如果你不想修改现有permission_handler的代码逻辑,可以将firebase_dynamic_links降到2.0.0版本以下,1.x版本的动态链接依赖的plugin_platform_interface版本为1.x,和现有permission_handler版本兼容。
修改示例:
注意:旧版本动态链接可能缺少部分新特性,且可能存在已知安全问题,非特殊情况不推荐该方案。firebase_dynamic_links: ^1.1.1 - 方案3:临时强制覆盖依赖版本
如果你只是临时调试,不想改动两个包的版本,可以在pubspec.yaml中添加dependency_overrides节点,强制锁定plugin_platform_interface的版本为2.0.0+:
注意:该方案属于强制兼容,permission_handler 5.x版本没有适配2.0+的dependency_overrides: plugin_platform_interface: ^2.0.0plugin_platform_interface,可能出现运行时异常,仅作为临时调试方案使用,不建议线上版本采用。
操作完版本修改后,执行以下命令清除缓存重新拉取依赖即可:
flutter clean flutter pub get
内容的提问来源于stack exchange,提问作者Ali Azizi
相关产品推荐
相关产品推荐

