App Mobile — Flutter
O Radar Bov é o aplicativo iOS e Android do RadarBov, construído com Flutter. É o principal instrumento de campo — com ele os operadores registram movimentações diretamente nas fazendas, lendo brincos RFID via Bluetooth e capturando localização GPS.
Package: granter | Versão: 0.7.18+29 | Idioma: Português (pt-BR)
Stack técnica
| Componente | Tecnologia |
|---|---|
| Framework | Flutter (Dart SDK ≥3.3.3) |
| Design | Material Design 3, fonte Poppins |
| Roteamento | GoRouter 14.8.1 |
| Injeção de dependências | GetIt 7.6.8 |
| Estado | ChangeNotifier (padrão Flutter) |
| HTTP | Dio 5.8.0 |
| Banco local | SQLite via sqflite 2.4.2 (schema v34) |
| Tokens JWT | flutter_secure_storage 9.0.0 |
| Bluetooth Android | flutter_bluetooth_serial (fork, submodule) |
| Bluetooth iOS | flutter_blue_plus 2.0.2 + flutter_bluetooth_iap |
| GPS | geolocator 14.0.2 |
| Push | OneSignal 5.3.3 |
| Mapas | flutter_map 8.2.2 + latlong2 |
| Áudio | just_audio 0.9.40 |
| Erros | dartz 0.10.1 (Either) |
Arquitetura — Clean Architecture + DDD
O app segue Clean Architecture + Domain-Driven Design em 4 camadas:
lib/src/
├── domain/ → entidades, contratos de repositório
├── application/ → use cases, lógica de negócio
├── infrastructure/ → implementações (API, SQLite, Bluetooth, GPS)
└── presenter/ → UI (screens, widgets, stores)
Cada feature tem seu próprio injector (GetIt), store (ChangeNotifier) e arquivos de tradução JSON.
Funcionalidades
| Módulo | Função |
|---|---|
auth/ | Login, cadastro multi-etapas, recuperação de senha |
home/ | Dashboard com atalhos para operações |
animal_ingress/ | Entrada de Animais |
animal_egress/ | Saída de Animais |
animal_identification/ | Identificação de Animais |
tracking/ | Viagens e Rastreamento |
gta/ | GTA - Guia de Trânsito Animal |
data_sharing/ | Compartilhamento de Dados |
invites/ | Convites e Permissões |
synchronization_errors/ | Erros de sincronização |
search_tag/ | Busca de brinco |
socioenvironmental_history/ | Conformidade Socioambiental |
Diferencial: offline-first
O app foi projetado para funcionar sem internet e sincronizar quando houver conexão. Ver Modo Offline e Sincronização para detalhes.
Diferencial: leitura RFID via Bluetooth
O app conecta-se a leitores RFID Bluetooth de campo (Allflex, Agrident, Tru-Test e outros). Ver Leitura de Brincos via Bluetooth para detalhes.
Ambientes
| Ambiente | Entry point |
|---|---|
| Dev | main_dev.dart |
| Staging | main_staging.dart |
| Prod | main_prod.dart |
| PCI | main_pci.dart |
Comparação com o portal web
| Aspecto | Web (Vue) | Mobile (Flutter) |
|---|---|---|
| Uso principal | Gestão e consulta | Operação em campo |
| RFID Bluetooth | Não | Sim |
| Offline | Não | Sim |
| GPS | Não | Sim |
| Push notifications | Não | Sim |
| Cadastro de usuário | Via administrador | Auto-cadastro |