Flutter 版的 NVM——FVM 使用指南

what is FVM?

FVM(Flutter Version Management) 是一个用于管理多个 Flutter SDK 版本的工具,类似于 Node.js 开发者常用的 NVM。

解决了什么问题?

  • 不同项目需要不同 Flutter 版本
  • 全局只有一个版本,切换麻烦
  • 团队成员版本不一致导致构建失败

安装 FVM

macOS / Linux

bash 复制代码
brew install fvm

Windows(需要先安装 Dart)

bash 复制代码
dart pub global activate fvm

安装完成后,确保将 Dart 全局 bin 目录加入 PATH。

快速上手

1. 安装指定版本

bash 复制代码
fvm install 3.24.0
fvm install 3.19.0
fvm install xxxx

2. 在项目中使用和全局使用

bash 复制代码
## 项目切换
cd /项目目录
fvm use 3.24.0

执行后会自动生成 .fvm 配置文件和 fvm_config.json

bash 复制代码
## 全局切换
fvm use 3.24.0 --global
对比项 fvm use X --global fvm use X
作用范围 整台机器 当前项目
生成文件 ~/.fvm/ ./.fvm/
Git 管理 ❌ 不提交 ✅ 可以提交
优先级 低(被项目配置覆盖)

最佳实践 :个人开发用 --global不用管的那么严格不会污染项目代码,团队项目不带 --global 并提交配置,还是严格一些好。

3. 运行 Flutter 命令

bash 复制代码
# 通过 fvm 调用(推荐)
fvm flutter run
fvm flutter build apk

# 或激活全局版本
fvm use 3.24.0 --global

4. 查看已安装版本

bash 复制代码
fvm list

输出示例:

复制代码
Cached versions:
  3.24.0
  3.19.0

团队协作最佳实践

1. 提交 FVM 配置到 Git

在项目根目录执行:

bash 复制代码
fvm use 3.24.0
git add .fvm fvm_config.json
git commit -m "Add FVM configuration"

2. 配置 .gitignore

bash 复制代码
# FVM
.fvm/flutter_sdk/

3. 新成员入职

bash 复制代码
git clone <your-repo>
fvm install
fvm use

一行命令搞定环境同步!

工作原理

FVM 将各版本 SDK 安装在统一目录(和nvm大差不差):

复制代码
~/.fvm/versions/
├── 3.24.0/
└── 3.19.0/

通过软链接和 PATH 优先级,实现不同项目使用不同版本。

常用命令速查

命令 说明
fvm install <version> 安装 Flutter 版本
fvm use <version> 切换项目版本
fvm use <version> --global 设置全局默认版本
fvm list 查看已安装版本
fvm remove <version> 删除指定版本
fvm flutter <args> 运行 Flutter 命令
fvm doctor 检查 FVM 状态

更新 FVM 自身

方式一:Homebrew(macOS/Linux)

bash

复制

复制代码
brew upgrade fvm

方式二:Dart pub global(Windows)

bash

复制

复制代码
dart pub global activate fvm

activate 会自动更新到最新版本

方式三:手动下载

GitHub Releases 下载新版,覆盖旧文件即可。


验证当前版本

bash

复制

复制代码
fvm --version

注意 :FVM 更新的是工具本身 ,Flutter SDK 版本是独立的------更新 FVM 不会影响你已经通过它安装的 3.24.03.19.0 等 SDK 版本。

总结

FVM 是 Flutter 开发者必备的多版本管理工具,和mvm一样(虽然nvm问题也很多)。

推荐团队统一使用 FVM 管理 Flutter 版本,配合 Git 配置实现环境一致性。

如果fvm自己要更新


💡 如果你还有其他 Flutter 开发工具推荐,欢迎补一下!

相关链接:

相关推荐
安好说AI9 小时前
Flutter 三方库 adaptive_image_picker 的鸿蒙化适配指南:零权限选图、纯 Dart 裁剪与目标大小压缩
flutter·harmonyos
恋猫de小郭11 小时前
Dart Skills CLI 1.0 :AI 时代的 Dart 交付支持
android·前端·flutter
97650333514 小时前
iOS 上架/审核 4.3a全面解读-最新
flutter·ios·objective-c·uniapp
2501_9151063215 小时前
Flutter iOS混淆打包详细教程与步骤
android·flutter·ios·小程序·uni-app·iphone·webview
lqj_本人15 小时前
Flutter 鸿蒙实战:用 wakelock_plus 三方库给阅读页加上屏幕常亮
flutter·华为·harmonyos
熊猫钓鱼>_>1 天前
Flutter app_settings 鸿蒙适配实战:Intent 体系到 Want 的跨越
flutter·华为·harmonyos·openharmony·intent·want
里欧跑得慢1 天前
Flutter主题与样式详解
前端·css·flutter·web
程序员老刘1 天前
现在回头看,Dart取消宏是无比正确的决定
flutter·ai编程·dart
莫道桑榆晚hh1 天前
Flutter 双端开发实战:一套代码搞定 iOS + Android,从开发到上架全流程
flutter
Zeaon1 天前
别再手写筛选栏了:一个可组合的 Flutter 选择组件(5 入口 × 7 委托)
android·flutter