Autores:
- Vinícius Alves de Santana — 2002488
- Thiago Gabriel Silva Braga da Cruz — 2002246
Disciplina: Sistemas Móveis
Aplicativo Flutter que mostra a classificação de pilotos e classificação de equipes da temporada atual da Fórmula 1, consumindo a API pública f1api.dev.
Visual escuro com identidade da F1 (preto #111111 + vermelho #E8002D).
Organizamos o lib/ em 4 pastas por camada (Layered Architecture), partindo da base da menu_lanchonete mas evoluindo a separação:
lib/
├── components/ # Cards reutilizáveis (StatelessWidget com parâmetro)
│ ├── card_piloto.dart
│ └── card_equipe.dart
├── data/ # Camada de dados (API REST)
│ └── f1_api_service.dart
├── models/ # Modelos do domínio
│ ├── piloto.dart
│ └── equipe.dart
├── screens/ # Telas
│ ├── tela_pilotos.dart # home, lista de pilotos
│ ├── tela_equipes.dart # lista de equipes
│ ├── tela_detalhe_piloto.dart # detalhe ao clicar num piloto
│ └── tela_detalhe_equipe.dart # detalhe ao clicar numa equipe
├── f1_app.dart # MaterialApp + tema + home
└── main.dart # runApp(F1App())
- Consumo de API REST com
Dioem vez de lista hardcoded FutureBuilderpara renderizar dados assíncronos com tratamento de loading, erro e lista vazia- Componentes próprios (
CardPiloto,CardEquipe) em arquivos separados, recebendo objeto e callback de toque GestureDetectorcustomizado para os cards (em vez deListTile) por controle visual total: gradiente, borda arredondada, imagem do piloto/carro- Tema customizado no
F1Appcomgoogle_fonts(Roboto) e paleta dark da F1 - Separação por camadas em 4 pastas para escalar melhor que a lanchonete (que tinha tudo solto em
lib/)
| # | Requisito | Onde está |
|---|---|---|
| 1 | 3+ telas com passagem de parâmetro | 4 telas. Detalhes recebem o objeto via construtor: TelaDetalhePiloto(piloto: ...) e TelaDetalheEquipe(equipe: ...) |
| 2 | API REST ou banco de dados | lib/data/f1_api_service.dart consome f1api.dev via Dio |
| 3 | StatefulWidget | TelaPilotos e TelaEquipes |
| 4 | Carousel / Drawer / Animação / BottomNavigationBar | BottomNavigationBar em TelaPilotos e TelaEquipes, alterna entre as duas com pushReplacement |
| 5 | Lib do pub.dev (exceto BD/API) | google_fonts para aplicar a fonte Roboto no tema |
| 6 | Componentes em arquivos separados com parâmetros | lib/components/card_piloto.dart (recebe Piloto) e card_equipe.dart (recebe Equipe) |
flutter pub get
flutter runflutter— SDK basedio— cliente HTTP para consumir a APIgoogle_fonts— fonte Roboto no tema