Gerenciando Múltiplas Versões do Flutter com FVM

Flutter Development

Introdução

Quem trabalha com Flutter há algum tempo inevitavelmente encontra um problema comum: diferentes projetos exigem versões diferentes do SDK.

Imagine o seguinte cenário:

  • Projeto A utiliza Flutter 3.35
  • Projeto B utiliza Flutter 3.29
  • Projeto C ainda está preso em uma versão mais antiga

Sem uma ferramenta de gerenciamento de versões, você precisaria atualizar e fazer downgrade do Flutter constantemente, o que gera perda de produtividade e diversos problemas de compatibilidade.

É exatamente para resolver esse problema que existe o FVM (Flutter Version Management).

O FVM permite instalar múltiplas versões do Flutter na mesma máquina e definir qual versão cada projeto deve utilizar.


O que é o FVM?

O FVM é uma ferramenta de gerenciamento de versões semelhante ao:

  • NVM para Node.js
  • SDKMAN para Java
  • Pyenv para Python

Seu objetivo é permitir que cada projeto utilize sua própria versão do Flutter sem interferir nos demais.

Benefícios:

  • Evita conflitos de versão.
  • Facilita trabalho em equipe.
  • Simplifica upgrades.
  • Permite testar novas versões com segurança.
  • Garante ambientes reproduzíveis.

Instalando o FVM

A forma mais simples é utilizando o Dart:

dart pub global activate fvm

Após a instalação, adicione o diretório global ao PATH.

No macOS ou Linux:

export PATH="$PATH:$HOME/.pub-cache/bin"

Adicione essa linha ao:

~/.zshrc

ou

~/.bashrc

Após isso:

source ~/.zshrc

ou

source ~/.bashrc

Verificando a Instalação

Confirme que tudo está funcionando:

fvm --version

Resultado esperado:

3.x.x

Instalando uma Versão do Flutter

Instalar uma versão específica:

fvm install 3.35.0

Instalar a versão estável mais recente:

fvm install stable

Instalar uma versão beta:

fvm install beta

O FVM fará o download do SDK e armazenará localmente.


Listando Versões Instaladas

fvm list

Exemplo:

Cache Directory: ~/.fvm
 
Flutter SDKs:
 
3.29.0
3.35.0
stable

Configurando um Projeto

Dentro do projeto:

cd meu-projeto

Defina a versão desejada:

fvm use 3.35.0

Será criado:

.fvm/

e

.fvmrc

Esses arquivos identificam qual versão do Flutter aquele projeto utiliza.


Executando Comandos Flutter

Em vez de:

flutter run

Utilize:

fvm flutter run

Da mesma forma:

fvm flutter pub get
fvm flutter test
fvm flutter build apk
fvm flutter build ios

Isso garante que o comando será executado usando a versão correta.


Criando Novos Projetos

Criar projeto utilizando uma versão específica:

fvm flutter create meu_app

ou

fvm use stable
 
fvm flutter create meu_app

O projeto já nascerá configurado para utilizar o FVM.


Configurando VSCode

Abra:

.vscode/settings.json

Adicione:

{
  "dart.flutterSdkPath": ".fvm/flutter_sdk"
}

Agora o VSCode utilizará automaticamente a versão correta.


Configurando Android Studio

Abra:

Settings
→ Languages & Frameworks
→ Flutter

Defina:

.fvm/flutter_sdk

como SDK do Flutter.


Compartilhando com a Equipe

Versione:

.fvmrc

Exemplo:

{
  "flutter": "3.35.0"
}

Quando outro desenvolvedor clonar o projeto:

fvm install

O SDK correto será instalado automaticamente.


Atualizando Versões

Instale uma nova versão:

fvm install 3.36.0

Atualize o projeto:

fvm use 3.36.0

Verifique se tudo continua funcionando:

fvm flutter test
fvm flutter analyze

Removendo Versões

Listar versões:

fvm list

Remover:

fvm remove 3.29.0

Isso libera espaço em disco.


Boas Práticas

Sempre versione o .fvmrc

Isso garante que todos os membros da equipe utilizem exatamente a mesma versão.


Nunca utilize Flutter global em projetos FVM

Prefira sempre:

fvm flutter

em vez de:

flutter

Automatize no CI/CD

Em pipelines:

fvm install
 
fvm flutter pub get
 
fvm flutter test

Isso garante consistência entre ambiente local e produção.


Quando Utilizar FVM?

O FVM é recomendado para:

  • Qualquer projeto Flutter profissional.
  • Equipes com múltiplos desenvolvedores.
  • Aplicações legadas.
  • Projetos que precisam de estabilidade.
  • Empresas que mantêm vários aplicativos simultaneamente.

Na prática, após começar a utilizar FVM, torna-se difícil voltar ao gerenciamento manual de versões.


Conclusão

O FVM é uma das ferramentas mais importantes para quem trabalha profissionalmente com Flutter. Ele elimina conflitos entre versões do SDK, melhora a colaboração em equipe e garante que cada projeto utilize exatamente a versão para a qual foi desenvolvido.

Se você trabalha com mais de um projeto Flutter, utilizar FVM deixa de ser uma conveniência e passa a ser uma necessidade.