执行pub get后Flutter/Dart提示double不是类型的问题排查求助
问题排查建议
- 优先执行
dart analyze命令行做全局分析,命令行输出会明确标注冲突的double类型定义来源路径,可直接定位冲突文件归属的依赖包,不要完全依赖Android Studio的IDE索引结果,IDE缓存延迟经常会输出误导性错误。 - 对报红的
double标识符执行跳转定义操作(Windows快捷键Ctrl+B,Mac快捷键Cmd+B),如果跳转后不是Dart SDK的原生定义,直接查看目标文件所属的依赖包即可定位问题来源。 - 二分法缩小排查范围:先注释
pubspec.yaml中一半的第三方依赖,执行pub get后验证问题是否复现。如果复现就继续在当前注释的范围内缩小排查区间,反之则在未注释的另一半依赖中排查,10分钟内即可完成中小项目的全量依赖排查。
pub get 拉取依赖的存储位置
pub拉取的所有公共依赖统一存在系统级的缓存目录中,默认路径如下:
- Windows系统:
%LOCALAPPDATA%\Pub\Cache - Mac/Linux系统:
~/.pub-cache
如果本地配置了PUB_CACHE环境变量,依赖会优先存储到环境变量指定的路径下。项目本地的.dart_tool目录仅存储依赖索引映射,不会保存完整的依赖包代码。
排查依赖问题的替代方案
不建议通过重命名缓存文件的方式绕过pub get,pub缓存有严格的哈希校验规则,直接修改缓存文件会导致整个依赖体系索引异常,额外引入不可预知的问题。可使用下面两种更稳妥的方案排查:
- 按二分法修改
pubspec.yaml的依赖列表,每次调整后执行pub get验证,操作成本极低。 - 打开项目下的
.dart_tool/package_config.json文件,查找所有依赖的本地存储路径,直接到对应路径下全局搜索顶层double关键字的定义,无需修改任何缓存文件即可定位冲突来源。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

