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

Flutter pub get报错mockito与flutter_test依赖冲突如何解决

依赖冲突原因
  • 主项目和子模块的Dart SDK约束不统一:根目录pubspec.yaml声明的SDK区间为>=2.7.0 <3.0.0,但子模块chat要求SDK版本>=2.16.1,基础环境约束存在矛盾
  • mockito版本不兼容:引用的mockito ^4.1.4属于空安全早期适配版本,依赖test_api ^0.2.19-nullsafety,但当前Flutter SDK内置的flutter_test固定依赖test_api 0.4.8,两个版本的test_api无法共存,直接导致依赖求解失败
修复步骤
  1. 统一SDK版本约束
    打开根目录的pubspec.yaml,找到environment配置块,将sdk版本约束修改为和子模块一致的区间:
environment:
  sdk: ">=2.16.1 <3.0.0"
  1. 升级mockito到兼容版本
    同文件下找到dev_dependencies配置块,将mockito的版本约束替换为适配当前flutter_test的稳定版本:
dev_dependencies:
  flutter_test:
    sdk: flutter
  mockito: ^5.3.2
  flutter_lints: ^1.0.0

注:mockito 5.x是完全适配test_api 0.4.x的空安全稳定版本,和当前使用的Flutter SDK无兼容问题。如果原有测试代码是基于mockito 4.x编写,升级后只需要按照新版规则配合build_runner生成mock类即可,调整成本极低。

  1. 重新拉取依赖
    在项目根目录执行以下命令清理旧缓存并重新安装依赖:
flutter clean
flutter pub get
不推荐的临时方案

如果暂时不想升级mockito版本,可以在根目录pubspec.yaml末尾添加依赖覆盖配置,强制指定test_api版本满足mockito 4.x的要求:

dependency_overrides:
  test_api: ^0.2.19-nullsafety

这种方案会篡改flutter_test的原生依赖版本,运行单元测试时大概率出现API不匹配的未知错误,仅适合临时调试使用,正式项目不要采用。

其余依赖(包括sqflite、cupertino_icons、子模块chat下的rethinkdb_dart、encrypt等)在上述配置下均不存在兼容问题,不需要额外调整。

内容的提问来源于stack exchange,提问作者Rohit Pendse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:48:19