Flutter 3.13.6项目运行时Dart依赖冲突问题求助
解决Flutter 3.13.6依赖冲突导致的构建失败问题
方案1:用pubspec.lock锁定依赖版本
- 每个项目保留自己的
pubspec.lock文件,不要随意删除或修改。运行项目前执行flutter pub get,它会优先读取该文件记录的精确依赖版本,不会自动下载不兼容的新版本。 - 这个文件能彻底固定项目依赖的版本组合,避免因依赖版本浮动引发的冲突,而且只要lock文件存在,
pub get不会重复下载已匹配的依赖包,能有效节省流量。
方案2:配置项目级独立缓存(替代手动复制文件夹)
不用手动删除/复制全局缓存,直接给每个项目指定专属缓存路径:
- 临时生效:运行项目时添加缓存路径参数:
缓存会存在项目根目录的flutter pub get --cache-path=./.pub_cache.pub_cache文件夹里,每个项目独立存储。 - 持久生效:进入项目目录时,通过终端设置专属环境变量(以bash为例):
之后执行export PUB_CACHE=$(pwd)/.pub_cacheflutter pub get或构建命令,都会自动使用这个本地缓存,切换项目时重新设置即可,完全不用手动操作缓存文件夹。
方案3:排查并手动修复冲突依赖
- 先运行
flutter pub outdated,查看哪些依赖存在版本不兼容或冲突的情况,定位冲突根源。 - 在
pubspec.yaml中手动指定冲突依赖的兼容版本:比如把带^的浮动版本(如package_a: ^1.2.3)改成固定版本(package_a: 1.2.3),或者根据依赖的更新日志,选择适配Flutter 3.13.6的版本范围。 - 如果是Flutter SDK版本导致的依赖不兼容,优先升级/降级个别依赖到适配3.13.6的版本,而非动整个缓存。
方案4:回退到兼容的依赖版本
如果是某个依赖更新后引发的冲突,执行以下命令回退到之前能正常运行的版本:
flutter pub downgrade <package_name>
执行完成后,pubspec.lock会自动更新锁定该版本,后续运行项目就不会再出现这个依赖的冲突问题。
内容的提问来源于stack exchange,提问作者Ahmed Loutfy
相关产品推荐
相关产品推荐

