📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Flutter. Recomendado revisar antes de começar.

💙 App de Controle Financeiro Multiplataforma com Flutter

v1.0 — Flutter 3, Dart, Gerenciamento de Estado, Material 3 e Multiplataforma

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Desenvolvedor Flutter Júnior. Flutter é a tecnologia multiplataforma mais popular do planeta, permitindo criar aplicativos para Android, iOS, Web e Desktop com uma única base de código em Dart. Dominar a árvore de Widgets (Stateless vs Stateful) e gerenciamento de estado é a chave da produtividade mobile.

—`

🎯 Objetivo & Escopo do Projeto

Construir um Aplicativo Mobile de Controle Financeiro Pessoal em Flutter 3 + Dart, implementando listagem de transações, cálculo automático de saldo em tempo real, formulário de lançamento com validação e interface responsiva no padrão Material Design 3.

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Fintech Mobile)

“Precisamos de um app mobile para Android e iPhone onde o usuário possa cadastrar receitas e despesas. O app deve ter um card de destaque exibindo o Saldo Atual (receitas - despesas) com cor verde para positivo e vermelho para negativo, uma lista de transações com ícones por categoria e um botão flutuante (FAB) para adicionar novos lançamentos.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Exibir card de saldo total com coloração dinâmica condicional. “card de destaque exibindo o Saldo”
RF02 Funcional Listar histórico de lançamentos com ícone e formatação monetária ($R$). “lista de transações com ícones”
RF03 Funcional Modal/Formulário para adicionar novas transações. “botão flutuante para adicionar”
RNF01 Não-Funcional 100% de paridade visual nativa em iOS e Android com Material 3. Multiplataforma
RNF02 Não-Funcional Renderização fluida a 60/120 FPS. Performance Flutter

—`

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como usuário, quero abrir o app no meu celular e ver meu saldo atualizado no topo. Alta
US02 Como cliente, quero lançar uma despesa e ver o saldo recalcular instantaneamente. Alta

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Setup)

# Branch da funcionalidade
git checkout -b feature/US01-flutter-finance-app

# Executar no emulador
flutter run

—`

🛠️ Fase 4 — Implementação Guiada (main.dart)

import 'package:flutter/material.dart';

void main() => runApp(const MeuAppFinanceiro());

class MeuAppFinanceiro extends StatelessWidget {
  const MeuAppFinanceiro({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(useMaterial3: true, colorSchemeSeed: Colors.green),
      home: const TelaPrincipal(),
    );
  }
}

class TelaPrincipal extends StatefulWidget {
  const TelaPrincipal({super.key});

  @override
  State<TelaPrincipal> createState() => _TelaPrincipalState();
}

class _TelaPrincipalState extends State<TelaPrincipal> {
  double saldo = 1250.00;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Controle Financeiro')),
      body: Center(
        child: Text('Saldo Atual: R$ ${saldo.toStringAsFixed(2)}',
          style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold)),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => setState(() => saldo += 100.0),
        child: const Icon(Icons.add),
      ),
    );
  }
}

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd mobile_flutter_01_financeiro

2. Execute a aplicação e os testes

flutter pub get
flutter run
flutter test

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/mobile_flutter_01_financeiro`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Asserções

// Teste de Widget do Flutter
testWidgets('Incrementa o saldo ao clicar no botao', (WidgetTester tester) async {
  await tester.pumpWidget(const MeuAppFinanceiro());
  await tester.tap(find.byType(FloatingActionButton));
  await tester.pump();
  expect(find.text('Saldo Atual: R$ 1350.00'), findsOneWidget);
});

—`

✅ Checkpoint Final

  1. App rodando perfeitamente em emuladores Android e iOS.
  2. Árvore de widgets e reatividade validadas com testes.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal