1 pontos por seonwookkim 2026-04-23 | Ainda não há comentários. | Compartilhar no WhatsApp

Quando um projeto Flutter cresce, é comum optar pela modularização (separação em pacotes) para melhorar o desempenho de build e o isolamento entre camadas. No entanto, à medida que o número de módulos aumenta, também cresce o esforço para gerenciar dezenas de arquivos pubspec.yaml, e fica difícil impor regras de arquitetura apenas com code review.

O Flutist é um framework inspirado no Tuist do iOS, projetado para permitir declarar e gerenciar em código as especificações e regras do projeto sobre pub workspaces do Dart 3.6+.

"Por que Flutist?"

  1. Configuração declarativa do projeto
    Em vez de editar diretamente o pubspec.yaml de cada módulo, você declara as versões dos pacotes em package.dart e o grafo de dependências entre módulos em project.dart. Com uma única definição, o pubspec.yaml de todos os módulos é sincronizado com o comando flutist generate.

  2. Aplicação automática das regras de arquitetura
    Na Clean Architecture, mesmo que o domínio referencie diretamente a camada de dados ou surjam dependências circulares, o pub não bloqueia isso. O Flutist permite ativar o strictMode, e, se houver violação, exibe um erro durante o generate. Princípios que antes existiam apenas na documentação ou no code review se tornam regras executáveis.

  3. Segurança de tipos e produtividade
    Em vez de referências a pacotes baseadas em strings, ele oferece autocompletar na IDE e verificação de tipos em tempo de compilação por meio de acessores gerados automaticamente. Além disso, fornece recursos de scaffolding para criar estruturas repetitivas de camadas ou boilerplates, minimizando o custo de configuração inicial.

  4. Otimização da experiência de desenvolvimento
    Além de permitir execução paralela ou individual de testes por módulo, o flutist graph permite visualizar imediatamente no navegador as dependências complexas entre módulos.

4 tipos de módulo suportados

  • clean — Clean Architecture de 3 camadas (domain / data / presentation)
  • micro — Microfeature de 5 camadas (interface / implementation / testing / tests / example)
  • lite — 4 camadas, removendo example do micro
  • simple — pacote único (para utilitários, modelos compartilhados e app shell)

Comandos da CLI

  • flutist init / create / generate / check / pub / scaffold / test / graph
  • flutist check verifica apenas a arquitetura sem gerar arquivos → para pipelines de CI
  • Com flutist graph --open, é possível ver diretamente no navegador o grafo de dependências em Mermaid

Links

Se você está pensando em uma arquitetura Flutter multi-módulo, recomendo experimentar o Flutist. Se puder enviar feedback, vou procurar incorporá-lo ativamente! Obrigado 🙏

Ainda não há comentários.

Ainda não há comentários.