当前位置: 首页 > news >正文

关于flutter插件的存储位置问题

问题:

Flutter插件存储位置:C:\Users\****\AppData\Local\Pub\Cache\是否可以设置到项目目录下?如果存储在系统盘,是否多个flutter项目的插件会互相影响?

可以设置到项目目录下吗?

技术上可以,但不推荐。

一、Pub Cache 存储机制

当前机制(全局共享)

C:\Users\***\AppData\Local\Pub\Cache\
├── hosted\
│   └── pub.dev\
│       ├── http-1.2.0\
│       ├── provider-6.1.5\
│       └── mobile_scanner-5.2.3\
├── git\
└── bin\

特点:

  • ✅ 所有Flutter项目共享同一份插件
  • ✅ 多个项目使用相同版本的插件时,只存储一份
  • ✅ 节省磁盘空间(可能节省几GB)

多个项目会互相影响吗?

答案:不会冲突,但会共享!

版本隔离机制
Pub Cache 存储结构:
└── hosted\pub.dev\├── http-1.1.0\          ← 项目A使用├── http-1.2.0\          ← 项目B使用└── http-1.2.1\          ← 项目C使用

工作原理:

  1. 每个项目的 pubspec.lock 记录了精确的插件版本
  2. Pub Cache 按 包名-版本号 存储,不同版本互不影响
  3. 项目构建时,从缓存中读取对应版本

示例:

# 项目A的 pubspec.yaml
dependencies:http: ^1.1.0  # 实际使用 1.1.2# 项目B的 pubspec.yaml  
dependencies:http: ^1.2.0  # 实际使用 1.2.1

两个项目互不影响,各自使用对应版本。

二、设置到项目目录(per-project)

方法一:临时设置(单个项目)

在项目根目录创建 .env 或脚本:

PowerShell 脚本 (run.ps1):

# 设置项目专用的Pub Cache
$env:PUB_CACHE = "$PSScriptRoot\.pub-cache"# 运行Flutter命令
flutter pub get
flutter run

使用方法:

.\run.ps1

方法二:永久设置(单个项目)

在项目根目录创建 pubspec.local.yaml(需要配合工具):

# 这个文件Flutter原生不支持
# 需要使用第三方工具如 melos

实际上,Flutter没有原生的项目级Pub Cache设置。

三、为什么不推荐项目级存储?

1. 磁盘空间浪费

2. 构建速度变慢

# 全局缓存(已有插件)
flutter pub get  # 0.5秒(只检查版本)# 项目级缓存(新项目)
flutter pub get  # 30-60秒(重新下载所有插件)

3. 维护复杂

# 每个项目都要单独清理
cd ProjectA && flutter clean
cd ProjectB && flutter clean
cd ProjectC && flutter clean# vs 全局清理一次
flutter pub cache clean

4. 团队协作问题

# .pub-cache 不应提交到Git
# 但容易忘记添加到 .gitignore
git status
# Untracked files:
#   .pub-cache/  (2GB 文件!)

5. IDE配置麻烦

Android Studio、VS Code 需要手动配置每个项目的缓存路径。

四、推荐方案:全局缓存在非系统盘(最推荐)

# 设置环境变量(永久)
setx PUB_CACHE "D:\flutter_pub_cache"# 或在用户级环境变量中设置

优点:

  • ✅ 所有项目共享,节省空间
  • ✅ 避免C盘占用
  • ✅ 解决跨盘符问题
  • ✅ 维护简单

缺点:

  • ⚠️ 初次设置需要重新下载依赖

Windows - 永久设置:移动Pub Cache到D盘

步骤1:

  1. Win + R → 输入 sysdm.cpl → 回车
  2. "高级" 标签 → "环境变量"
  3. "用户变量" → "新建":
    • 变量名:PUB_CACHE
    • 变量值:D:\flutter_pub_cache
  4. 确定 → 重启电脑或者使用命令刷新环境变量

或使用命令(需要管理员权限):

[System.Environment]::SetEnvironmentVariable('PUB_CACHE', 'D:\flutter_pub_cache', 'User')

步骤2:清理旧缓存(可选)

# 1. 删除C盘旧缓存(释放空间)
Remove-Item -Recurse -Force C:\Users\***\AppData\Local\Pub\Cache# 2. 清理项目
flutter clean# 3. 重新下载到D盘
flutter pub get

步骤3:验证

# 查看当前Pub Cache位置 powershellecho $env:PUB_CACHE

http://www.dtcms.com/a/469660.html

相关文章:

  • 把“Mixed Content”吃干抹净——一次 https→http 踩坑实录
  • 中山大学联合项目 论文解读 | iManip:面向机器人操作的技能增量学习
  • Unity:Json笔记——Json文件格式、JsonUtlity序列化和反序列化
  • 第八章 惊喜15 小萍收获初会
  • RabbitMQ基础知识与Spring Boot 3.x集成案例
  • 租房网站建设多少钱网站域名怎么改
  • Redis CPU高负载案例分析
  • ARMv9 CCA机密计算架构演进技术解析:重塑云原生时代的数据安全基石
  • 湖州网站设计浙北数据最新发布的手机有哪些
  • AD加域账号权限设置
  • 解决idea报错:Error running TrustApexCrmApplication. Command line is too long
  • 网站开发淄博进口商品代理平台
  • systme V共享内存(version1)
  • 万网网站制作wordpress投稿管理系统
  • python(47) : 快速截图[Windows工具(2)]
  • VSCODE GDB调试
  • 江西企业网站定制wordpress网页效果
  • CCF-GESP 等级考试 2024年6月认证C++三级真题解析
  • 前端学习1(学习时间:30分钟简单)
  • vlan范围
  • 北京顺义做网站编程正规学校有哪几所
  • 跨平台向量库:Linux Windows 上一条龙部署 PostgreSQL 向量扩展
  • 基于YOLO与DeepSort的高效行人跟踪算法研究
  • [GazeTracking] 视线追踪核心逻辑 | Dlib库
  • docker安装Xinference
  • 从标准化到个性化:基于代理模式的智能办公工具技术实现与趋势
  • AI(学习笔记第十一课) 使用langchain的multimodality
  • 如何配置iis网站国企500强完整名单
  • ppt做的最好的网站有哪些品牌建设方案和思路
  • [cpprestsdk] http_client_config | GET | request()