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

Pub Runner中的Dart版本与`flutter --version`不一致致依赖解析失败

问题核心成因
  • 系统PATH路径优先级错位
    终端执行flutter --version时,Flutter命令会硬编码调用自身SDK目录下缓存的内置Dart 2.12.2版本,完全不受系统PATH配置影响,输出的版本信息是准确的。但IDE内置的Pub Runner在做依赖版本校验时,是直接调用系统PATH中优先级最高的dart可执行文件做校验。如果当前设备曾经单独安装过独立版Dart SDK(比如早期做纯Dart项目开发时安装的2.10.3版本),且该独立Dart的bin目录在PATH中的排序优先级高于Flutter SDK的bin目录,就会出现实际校验用的Dart版本是2.10.3、但flutter自身显示的版本是2.12.2的错位问题。
  • 项目级IDE配置残留
    常规对比项目配置时,往往只会检查pubspec.yaml、pubspec.lock这类根目录文件,容易忽略IDE存储在项目隐藏配置目录(如.vscode、.idea文件夹)下的SDK路径配置。如果当前项目曾经关联过旧的独立Dart 2.10.3路径,这类项目级配置的优先级高于IDE全局设置,哪怕全局Flutter配置正确,项目内的Pub Runner还是会沿用旧路径读取Dart版本,这也是配置看起来完全一致、但单台设备解析失败的常见原因。
  • 全局Pub缓存残留
    此前在旧版本Flutter环境下跑过依赖解析时,会在全局Pub缓存中写入对应Dart版本的校验记录、部分依赖的本地缓存。如果后续只升级了Flutter SDK版本、没有修复全局缓存,Pub Runner在解析时会优先命中旧的缓存校验记录,误用2.10.3的版本值做依赖判断。
可操作的修复步骤
  • 校验系统全局Dart的实际命中版本:在终端直接执行dart --version,如果输出结果是2.10.3而非预期的2.12.2,调整系统PATH配置,把Flutter SDK的bin目录优先级提到独立Dart的前面,或是直接卸载旧的独立Dart SDK,直到dart --version的输出和flutter --version里显示的Dart版本完全一致。
  • 检查项目内的IDE SDK配置:打开项目下的.vscode/settings.json(VS Code)或是IDE的项目结构设置,确认dart.sdkPath配置指向当前Flutter SDK目录下的bin/cache/dart-sdk路径,移除指向独立旧Dart的错误配置,修改完成后重启IDE。
  • 重置本地缓存与依赖环境:在项目根目录依次执行flutter clean、flutter pub cache repair,清空项目构建缓存、修复损坏的全局Pub缓存条目,之后再执行flutter pub get重新拉取依赖,全程不要手动调用独立Dart对应的pub命令做解析。
  • 校验依赖兼容性:当前pubspec.yaml中配置的SDK约束为>=2.7.0 <3.0.0,本身完全兼容2.12.2版本,不需要修改约束规则;只要保证解析时实际使用的Dart版本是Flutter内置的2.12.2,就可以满足adaptive_theme 2.0.0要求的>=2.12.0的版本门槛,正常完成依赖解析。

内容的提问来源于stack exchange,提问作者Caleb Robinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 12:27:00