Skip to content

SmartStockRFID/smartstock-mobile

Repository files navigation

Smart Stock

Flutter Dart

Aplicativo móvel desenvolvido em Flutter para conexão com o leitor RFID 🏷️
Projetado para se conectar a uma leitor RFID via Bluetooth Low Energy (BLE) para otimizar a contagem e inventário de produtos.

🚀 Começando

Siga estas instruções para obter uma cópia do projeto em funcionamento na sua máquina local para desenvolvimento e testes.

Pré-requisitos

Instalação

  1. Clone o repositório:

    git clone {repositório do ssrfid-app}
    cd ssrfid-app
  2. Instale as dependências:

    flutter pub get
  3. Configure as variáveis de ambiente: Crie um arquivo .env na raiz do projeto, baseado no arquivo .env.example. Preencha com as informações necessárias.

  4. Gere os arquivos de rota: O projeto utiliza auto_route para navegação. Execute o seguinte comando para gerar os arquivos necessários:

    dart run build_runner build
  5. Execute o aplicativo:

    flutter run

📂 Estrutura do Projeto

O projeto segue uma arquitetura limpa, separando as responsabilidades em diferentes camadas:

lib/
├── app/
│   ├── bluetooth/      # Lógica de conexão Bluetooth e máquina de estados
│   ├── config/         # Configurações de API, dependências e variáveis de ambiente
│   ├── data/           # Repositórios e Data Transfer Objects (DTOs)
│   ├── domain/         # Entidades e abstrações de repositórios
│   ├── routing/        # Configuração de rotas (AutoRoute)
│   ├── ui/             # Widgets, páginas, providers (Riverpod) e temas
│   └── utils/          # Classes utilitárias (ex: logger)
└── main.dart           # Ponto de entrada da aplicação

🛠️ Tecnologias Utilizadas

👀 OBS

  • Para manter uma transição mais suave entre telas com o mesmo estilo de AppBar, optei por usar AutoTabs em vez de Navigator.push(), evitando o efeito padrão que troca toda a tela. Porém, como o AutoTabs simula a navegação, o botão nativo de voltar acaba fechando o app quando estamos em rotas internas. Resolvi isso usando PopScope e SystemNavigator.pop() no Android. No iOS, esse comportamento será diferente, pois o método não é suportado. Edit: acredito que personalizando a animação de troca de tela isso não seria necessário. No entanto, hoje essas telas também tem comportamentos compartilhados, então, caiu como luva.
  • Créditos do plano de fundo da tela inicial stock.png: https://www.pexels.com/photo/red-and-white-plastic-containers-on-shelf-3992851/ + https://pinetools.com/blur-image no filtro Stack Blur e radius 100 + https://imgonline.tools/pt/darken com 15 de fator de escurecimento.
  • A troca do ícone da aplicação no IOS precisa de ajustes para ficar funcional. Também, devido a falta de hardware compatível, a versão IOS do aplicativo não foi testada.

flutter build apk --ofuscate --split-debug-info=/output

About

Flutter app for real-time inventory tracking with RFID and BLE.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages