用途:把 Flutter 项目固定到指定 SDK 版本,使所有贡献者与 CI 构建使用同一工具链,解决版本漂移问题。
主要能力:安装 FVM;为项目固定版本(生成 .fvmrc 与 .fvm/flutter_sdk 软链接);安装已有固定版本;切换版本、--force、--pin 与全局版本;配置 VS Code、Android Studio/IntelliJ 的 SDK 路径;接入 GitHub Actions;通过 FVM 运行 Flutter/Dart;用 fvm spawn 在多个版本上跑测试;日常维护(list、releases、remove、doctor、destroy)。
使用方式:先并行探测状态,例如 fvm --version、检查 .fvmrc、.fvm 目录、pubspec.yaml 与 .gitignore。无 FVM 时按平台安装,如 brew tap leoafarias/fvm && brew install fvm、curl -fsSL https://fvm.app/install.sh | bash、choco install fvm 或 dart pub global activate fvm,之后用 fvm --version、fvm doctor 验证。固定版本在项目根目录执行 fvm use <version>,会生成 .fvmrc 并运行 flutter pub get。安装已有固定版本用 fvm install 与 fvm doctor。IDE 中 VS Code 设置 dart.flutterSdkPath 为 .fvm/flutter_sdk;CI 建议用 jq 从 .fvmrc 读取版本,配合 subosito/flutter-action。项目内统一使用 fvm flutter run、fvm flutter test、fvm dart run build_runner build 等命令。
适用场景:需要可复现构建的 Flutter 应用与包;多人协作、CI 一致性;包作者验证多版本兼容性。
限制:若项目没有 pubspec.yaml,则不是 Flutter 项目,需先停止并询问用户。不要提交 .fvm/flutter_sdk,只跟踪 .fvmrc,并把 .fvm/ 加入 .gitignore。正式项目应固定具体版本而非 channel。不要在 CI 安装 FVM 仅为读取 .fvmrc;不要直接编辑 .fvm/flutter_sdk 修补 SDK;不要用 fvm destroy 做日常清理。其他未提及事实暂未提供。