Flutist: criei um framework para gerenciar arquitetura modular em Flutter! (feat. Tuist)
(flutist-1pn8eqs9s-seonwookes-projects.vercel.app)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?"
-
Configuração declarativa do projeto
Em vez de editar diretamente opubspec.yamlde cada módulo, você declara as versões dos pacotes empackage.darte o grafo de dependências entre módulos emproject.dart. Com uma única definição, opubspec.yamlde todos os módulos é sincronizado com o comandoflutist generate. -
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, opubnão bloqueia isso. O Flutist permite ativar ostrictMode, e, se houver violação, exibe um erro durante ogenerate. Princípios que antes existiam apenas na documentação ou no code review se tornam regras executáveis. -
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. -
Otimização da experiência de desenvolvimento
Além de permitir execução paralela ou individual de testes por módulo, oflutist graphpermite 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, removendoexampledomicrosimple— pacote único (para utilitários, modelos compartilhados e app shell)
Comandos da CLI
flutist init/create/generate/check/pub/scaffold/test/graphflutist checkverifica 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
- Docs: https://flutist-web.vercel.app/docs
- pub.dev: https://pub.dev/packages/flutist
- GitHub: https://github.com/seonwooke/flutist
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.