You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中share_plus与open_file的ffi版本冲突解决及多版本导入疑问

Dart/Flutter依赖版本冲突解决(ffi版本不兼容问题)

报错信息(中文翻译)

[testesFlutter] flutter pub get
在testesFlutter中执行"flutter pub get"...
正在解析依赖...
因为 open_file >=3.1.0 依赖 ffi ^1.0.0,而 share_plus 6.3.1 依赖 ffi ^2.0.1,所以 open_file >=3.1.0 和 share_plus 6.3.1 不兼容。
因此,由于 view_page_testes 同时依赖 share_plus 6.3.1 和 open_file 3.2.1,版本解析失败。
pub get 执行失败
命令: "/Users/lucasbarreto/flutter/bin/cache/dart-sdk/bin/dart __deprecated_pub --directory . get --example"
pub 环境变量: {
"FLUTTER_ROOT": "/Users/lucasbarreto/flutter",
"PUB_ENVIRONMENT": "vscode.dart-code:flutter_cli:get",
"PUB_CACHE": "/Users/lucasbarreto/.pub-cache",
}
退出码: 1

核心问题解答

Dart/Flutter的包管理系统不支持导入同一库的两个不同版本,这种操作会直接导致依赖解析失败,因此不能通过该方式解决冲突。

可行的解决方法

1. 升级open_file到兼容ffi 2.x的版本

检查open_file的最新版本,确认是否已更新ffi依赖至2.x系列。修改pubspec.yaml指定最新兼容版本后执行flutter pub get:

dependencies:
  share_plus: ^6.3.1
  open_file: ^[最新兼容版本]

2. 降级share_plus到兼容ffi 1.x的版本

如果open_file暂无更新,可选择降级share_plus至依赖ffi 1.x的版本(例如5.x系列)。修改pubspec.yaml:

dependencies:
  share_plus: ^5.0.0
  open_file: ^3.2.1

3. 使用dependency_overrides强制统一ffi版本

通过dependency_overrides配置,强制所有依赖使用同一个ffi版本。注意此方法可能存在兼容性风险,需全面测试两个库的功能:

dependency_overrides:
  ffi: ^2.0.1

或指定1.x版本:

dependency_overrides:
  ffi: ^1.0.0

配置完成后执行flutter pub get,验证功能正常。

4. 替换冲突库

若上述方法均无效,可考虑替换其中一个库:

  • 用open_filex替代open_file
  • 选择其他分享类库替代share_plus
    确保替换后的两个库依赖无冲突。

内容的提问来源于stack exchange,提问作者Lucas Barreto Luz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:58:33