Gerenciando Múltiplas Versões do Flutter com FVM
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 fvmApó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:
~/.zshrcou
~/.bashrcApós isso:
source ~/.zshrcou
source ~/.bashrcVerificando a Instalação
Confirme que tudo está funcionando:
fvm --versionResultado esperado:
3.x.xInstalando uma Versão do Flutter
Instalar uma versão específica:
fvm install 3.35.0Instalar a versão estável mais recente:
fvm install stableInstalar uma versão beta:
fvm install betaO FVM fará o download do SDK e armazenará localmente.
Listando Versões Instaladas
fvm listExemplo:
Cache Directory: ~/.fvm
Flutter SDKs:
3.29.0
3.35.0
stableConfigurando um Projeto
Dentro do projeto:
cd meu-projetoDefina a versão desejada:
fvm use 3.35.0Será criado:
.fvm/e
.fvmrcEsses arquivos identificam qual versão do Flutter aquele projeto utiliza.
Executando Comandos Flutter
Em vez de:
flutter runUtilize:
fvm flutter runDa mesma forma:
fvm flutter pub getfvm flutter testfvm flutter build apkfvm flutter build iosIsso 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_appou
fvm use stable
fvm flutter create meu_appO projeto já nascerá configurado para utilizar o FVM.
Configurando VSCode
Abra:
.vscode/settings.jsonAdicione:
{
"dart.flutterSdkPath": ".fvm/flutter_sdk"
}Agora o VSCode utilizará automaticamente a versão correta.
Configurando Android Studio
Abra:
Settings
→ Languages & Frameworks
→ FlutterDefina:
.fvm/flutter_sdkcomo SDK do Flutter.
Compartilhando com a Equipe
Versione:
.fvmrcExemplo:
{
"flutter": "3.35.0"
}Quando outro desenvolvedor clonar o projeto:
fvm installO SDK correto será instalado automaticamente.
Atualizando Versões
Instale uma nova versão:
fvm install 3.36.0Atualize o projeto:
fvm use 3.36.0Verifique se tudo continua funcionando:
fvm flutter testfvm flutter analyzeRemovendo Versões
Listar versões:
fvm listRemover:
fvm remove 3.29.0Isso 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 flutterem vez de:
flutterAutomatize no CI/CD
Em pipelines:
fvm install
fvm flutter pub get
fvm flutter testIsso 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.