用途:当 dart pub get 因包版本不兼容而失败时,按此工作流排查并修复 Dart 依赖版本冲突。
核心概念:Dart 对依赖实行单版本规则,项目及其所有传递依赖必须解析到同一版本,以避免运行时类型不匹配,但会带来版本锁风险。因此 pubspec.yaml 使用版本约束而非固定版本,pubspec.lock 记录精确解析版本以保证可复现构建。dart pub outdated 输出列含义:Current 为 pubspec.lock 中当前版本;Upgradable 为 pubspec.yaml 约束允许的最新版本;Resolvable 为考虑全部依赖后可解析的绝对最新版本;Latest 为已发布最新版(不含预发布)。
主要能力与用法:
- 审计依赖:运行 dart pub outdated,查看 Upgradable 与 Resolvable 列,识别被撤回或已停用的包。
- 升级依赖:升级到 Upgradable 版本时运行 dart pub upgrade,再用 dart pub upgrade --tighten 自动收紧 pubspec.yaml 下界;升级到 Resolvable 大版本时手动修改约束(如 ^0.11.0 改为 ^0.12.1)后运行 dart pub upgrade。随后运行 dart analyze 与 dart test 修复破坏性变更。
- 解决冲突:切勿删除整个 pubspec.lock 再运行 pub get。应打开 pubspec.lock,仅删除冲突或被撤回包的 YAML 块,再运行 dart pub get 获取该包最新兼容且未被撤回的版本;用 dart pub deps 验证依赖图,若失败则定位造成锁定的传递依赖并更新其约束后重试。
建议:pubspec.yaml 依赖使用插入符语法(如 ^1.2.3);dev_dependencies 下界设为当前精确版本;CI 中使用 dart pub get --enforce-lockfile。
限制:资料未提供具体平台、收费或效果信息。