Logofvm

fvm

A per-project Flutter SDK version manager. One cache, a committed pin, and the right Flutter for every project.

FVM follows the same workflow as DVM, with Flutter SDKs and their bundled Dart runtimes.

Install#

curl -fsSL https://raw.githubusercontent.com/mrgnhnt96/fvm/main/install.sh | sh

No Dart or Flutter SDK is required first. Follow the installer’s setup instructions, then pin your project.

Pin a project#

~/code/app
fvm install stable
fvm use stable --gitignore
fvm flutter --version
fvm dart --version
Install once, pin your project, and run its Flutter SDK.

fvm use writes .fvmrc and creates .fvm/flutter_sdk for your IDE. Commit the pin; ignore the SDK link. Every project using the same version shares one SDK in ~/.fvm/versions.

Let Flutter follow the directory#

fvm setup creates a flutter shim and prints the PATH line. Add that line, or let setup write it with --write-path-line. Then plain flutter selects the SDK for your current directory.

FVM installs only a Flutter shim. Your existing DVM-managed dart can stay on PATH. Use fvm dart for the Dart bundled with the selected Flutter SDK.

Start here#

Inspect the choice#

fvm which
fvm list
fvm doctor

Version resolution is local: environment override, nearest project pin, global default, then Flutter on PATH. A missing explicit pin reports an error instead of silently choosing another SDK.

This repository is an independent Flutter manager, not the pub.dev package named fvm. It does not import another manager's cache. See Using FVM alongside DVM.