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

💙 App Offline-First com Sincronização & Hive NoSQL no Flutter 3

📁 Código deste projeto: mobile-flutter/ (os caminhos citados abaixo são relativos à subpasta).

Diagrama de arquitetura do projeto

v3.0 — Flutter 3, Dart, Hive DB, Connectivity Plus, Background Sync e Resiliência

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

🎓 Nível Profissional Simulado: Engenheiro Mobile Sênior. Aplicativos de missão crítica (vendas em trânsito, logística portuária) não podem parar se a conexão 4G/5G cair. Construir uma arquitetura Offline-First com Hive NoSQL e sincronização assíncrona é a chave da resiliência móvel.


🎯 Objetivo & Escopo do Projeto

Desenvolver um Aplicativo de Vendas e Pedidos de Campo Offline-First em Flutter 3, com persistência local em alta velocidade usando o banco NoSQL embarcado Hive, detecção dinâmica de conectividade com connectivity_plus e fila de mutações com reconciliação assíncrona no backend.


🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Diretor de Logística e Vendas Externas)

“Nossos 200 representantes comerciais visitam clientes em fazendas e galpões sem sinal de internet. O app precisa salvar pedidos localmente em sub-milissegundos no banco embarcado Hive, avisar na barra superior se está Online ou Offline, e assim que o vendedor chegar na cidade com sinal de Wi-Fi, o aplicativo deve descarregar a fila de pedidos automaticamente para o servidor.”

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

ID Tipo Descrição Origem no Briefing
RF01 Funcional Gravar pedidos localmente no Hive Box sem depender de rede. “salvar pedidos localmente”
RF02 Funcional Monitorar conectividade de rede exibindo indicador Online/Offline. “avisar na barra superior”
RF03 Funcional Fila de sincronização automática com flags sincronizado: true/false. “descarregar a fila automaticamente”
RNF01 Não-Funcional Leitura e escrita local em Hive com tempo de resposta inferior a 2 milissegundos. Alta Performance
RNF02 Não-Funcional Reatividade automática de tela com ValueListenableBuilder. Reatividade Flutter

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como vendedor em área rural, quero cadastrar pedidos sem travar o aplicativo. Alta
US02 Como sistema, quero reconciliar pedidos pendentes ao restabelecer conexão. Alta

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

# Branch da funcionalidade
git checkout -b feature/US01-flutter-offline-hive

# Executar a aplicacao Flutter
flutter run

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();
  await Hive.openBox('pedidos_offline');
  runApp(const OfflineFirstApp());
}


🚀 Como Executar no Laboratório

1. Navegue até a subpasta do projeto

cd catalogo_projetos/mobile_flutter_03_offline_first_hive/mobile-flutter

2. Instale as dependências e execute

flutter pub get
flutter run

3. Execute a bateria de testes automatizados

flutter test

🧭 Decisões de Arquitetura (ADRs)


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


✅ Checkpoint Final

  1. Hive Box gravando e recuperando pedidos offline.
  2. Reconciliação e monitoramento de conectividade funcionando.

⬅️ Ver Todos os Projetos no Catálogo de Projetos 🏠 Página Inicial do Portal