Uma aplicação de calculadora de Índice de Massa Corporal (IMC) desenvolvida em Flutter. O projeto foi evoluído de um script simples para uma arquitetura robusta baseada em Clean Architecture e TDD (Test-Driven Development).
Diferente de calculadoras convencionais, este projeto foca em qualidade de código e separação de responsabilidades:
- Clean Architecture: Divisão clara entre a camada de apresentação (UI) e a camada de domínio (Regras de Negócio).
- Decoupling: A interface do usuário não conhece as regras de cálculo, apenas consome um serviço de domínio.
- Test-Driven Development (TDD): A lógica de cálculo possui cobertura de testes unitários, garantindo que os resultados da OMS sejam precisos e imunes a regressões.
Este projeto está sendo construído em sprints, priorizando a robustez da lógica antes da interface.
- Camada de Domínio: Entidades e Regras de Negócio (OMS).
- Value Objects: Validação rigorosa de Peso e Altura (Weight/Height).
- Testes de Unidade: 4 testes aprovados cobrindo Sucesso, Limites e Exceções.
- Camada de Dados: Persistência local com SQLite (Próxima etapa).
- Interface de Usuário: UI responsiva com Material Design 3.
Seguindo os princípios da Clean Architecture, o código foi organizado em:
lib/
├── domain/
│ ├── entities/ # ImcModel: O modelo de dados puro
│ ├── usecases/ # CalculateImcUsecase: Regras de negócio isoladas
│ └── value_objects/ # Weight e Height: Validações de entrada (Peso/Altura)
└── main.dart # Camada de Apresentação (Flutter UI)
test/
└── domain/ # Testes de Unidade automatizados (4 testes aprovados)
🧪 Como rodar os Testes
Para validar a integridade da lógica de cálculo no terminal (Pop!_OS):
fvm flutter test🛠️ Tecnologias Utilizadas
-
Linguagem: Dart 3.x
-
Framework: Flutter
-
Gerenciador de Versão: FVM (Flutter Version Management)
-
Ambiente: VS Code no Pop!_OS Linux
Para executar este projeto localmente no seu ambiente (Linux/Windows/macOS), siga os passos abaixo:
- Ter o SDK do Flutter instalado (ou utilize o FVM).
- Um simulador Android/iOS ou o navegador Chrome habilitado.
- Clonar o repositório:
git clone https://github.com/DevSchoof/imccalc.git
- Entrar na pasta do projeto:
cd imccalc - Obter as dependências:
fvm flutter pub get
- Executar o projeto:
fvm flutter run
Desenvolvido por Eduardo Schoof Estudante de Análise e Desenvolvimento de Sistemas - IFSP LinkedIn | GitHub