Poesias Wear OS
Um aplicativo Flutter para Wear OS que exibe frases filosóficas, engraçadas e criativas de músicas de funk brasileiro, inspirado no projeto Filosofunk.
📱 Sobre o Projeto
Este projeto foi desenvolvido para dispositivos Wear OS (smartwatches Android), permitindo que os usuários visualizem e interajam com trechos poéticos de músicas de funk. O aplicativo oferece uma experiência otimizada para telas circulares e retangulares de relógios inteligentes, com suporte a reprodução de vídeos do YouTube diretamente no dispositivo.
Inspiração
Este projeto é uma adaptação para Wear OS do projeto original Filosofunk, que é um site web desenvolvido em Vanilla JS que reúne frases de músicas de funk. A ideia é levar essas "poesias" para o pulso dos usuários através de um aplicativo nativo para smartwatches.
🛠️ Tecnologias
Framework Principal
- Flutter 3.7.2+: Framework multiplataforma para desenvolvimento de aplicativos nativos
- Dart SDK: Linguagem de programação utilizada pelo Flutter
Plataforma Alvo
- Wear OS: Sistema operacional para smartwatches baseado em Android
📦 Bibliotecas e Dependências
Dependências Principais
Gerenciamento de Estado
- get: ^4.7.3: Biblioteca para gerenciamento de estado reativo, injeção de dependências e navegação
- Utilizado para: Gerenciamento de estado reativo (GetX), injeção de dependências, navegação e transições
Player de Vídeo
- youtube_player_flutter: ^9.1.3: Widget Flutter para reprodução de vídeos do YouTube
- Utilizado para: Reprodução de vídeos do YouTube diretamente no aplicativo, com suporte a controles de play/pause e navegação temporal
Wear OS
- wear_plus: ^1.2.4: Biblioteca para desenvolvimento de aplicativos Wear OS com Flutter
- Utilizado para: Detecção do formato do relógio (circular/retangular), gerenciamento de modo ambiente (ambient mode), e layouts adaptativos para smartwatches
UI Components
- cupertino_icons: ^1.0.8: Ícones no estilo iOS/Cupertino para Flutter
- Utilizado para: Ícones e elementos visuais da interface
Dependências de Desenvolvimento
- flutter_test: Framework de testes do Flutter (SDK)
- flutter_lints: ^5.0.0: Regras de lint recomendadas para projetos Flutter
- icons_launcher: ^3.0.3: Ferramenta para gerar ícones do aplicativo para diferentes plataformas
🏗️ Arquitetura e Padrões
Padrão Arquitetural
O projeto utiliza uma arquitetura baseada em MVC (Model-View-Controller) com elementos de GetX Pattern:
Estrutura de Pastas
lib/
├── domain/ # Camada de domínio (futuras expansões)
├── shared/ # Código compartilhado
│ ├── controller/ # Controladores (lógica de negócio)
│ │ └── MainController.dart
│ └── model/ # Modelos de dados
│ └── Poesia.dart
├── wear/ # Código específico para Wear OS
│ ├── screen/ # Telas do aplicativo
│ │ └── poesias/
│ │ ├── WatchScreen.dart
│ │ ├── CircularWearLayout.dart
│ │ └── RectangularWearLayout.dart
│ └── WearApp.dart # Widget raiz do aplicativo
└── main.dart # Ponto de entrada da aplicação
Padrões de Design Implementados
-
GetX Pattern (Reactive State Management)
- Gerenciamento de estado reativo usando
Rx observables
- Controllers que estendem
GetxController
- Uso de
Obx() para rebuild automático de widgets
-
Dependency Injection
- Injeção de dependências através do GetX
BindingsBuilder para inicialização de controllers
Get.lazyPut() para lazy loading de dependências
-
Model-View Separation
- Modelos de dados separados da lógica de apresentação
- Controllers como intermediários entre Model e View
- Widgets focados apenas em apresentação
-
Factory Pattern
Poesia.fromJson() para criação de objetos a partir de JSON
- Conversão de dados de forma centralizada
-
Observer Pattern
- Implementado através do GetX com
Rx observables
- Views observam mudanças nos controllers automaticamente
📋 Configuração do Projeto
Requisitos
- Flutter SDK 3.7.2 ou superior
- Dart SDK (incluído com Flutter)
- Android Studio ou VS Code com extensões Flutter
- Android SDK com suporte para Wear OS
- Dispositivo Wear OS ou emulador configurado
Instalação
-
Clone o repositório
git clone <url-do-repositorio>
cd poesias_wear_os
-
Instale as dependências
flutter pub get
-
Configure os assets
- Os assets já estão configurados no
pubspec.yaml:
assets/poesias.json: Arquivo JSON com todas as poesias
assets/fonts/cookie.ttf: Fonte personalizada Cookie
assets/fundo.jpg: Imagem de fundo
assets/icon.png: Ícone do aplicativo
-
Gere os ícones do aplicativo (opcional)
flutter pub run icons_launcher:generate
-
Execute o aplicativo
flutter run
Configuração do Android
O projeto utiliza Kotlin DSL para configuração do Gradle:
- build.gradle.kts: Configuração principal do projeto Android
- Suporte para Wear OS configurado automaticamente através do
wear_plus
Configuração de Assets
O pubspec.yaml está configurado com:
flutter:
assets:
- assets/poesias.json
- assets/fonts/cookie.ttf
- assets/fundo.jpg
- assets/icon.png
fonts:
- family: Cookie
fonts:
- asset: assets/fonts/cookie.ttf
📊 Estrutura de Dados
Modelo Poesia
O arquivo poesias.json contém um array de objetos com a seguinte estrutura:
{
"estrofe": "Texto do trecho da música",
"poesia": "Nome da música",
"poeta": "Nome do cantor(a) ou grupo",
"youtubeId": "ID do vídeo no YouTube",
"startTime": 30
}
Campos
- estrofe: Trecho da música que será exibido
- poesia: Nome da música
- poeta: Nome do artista ou grupo
- youtubeId: ID do vídeo no YouTube (usado para reprodução)
- startTime: Tempo em segundos onde o trecho aparece no vídeo
Classe Poesia (Dart)
class Poesia {
final String estrofe;
final String poesia;
final String poeta;
final String youtubeId;
final int startTime;
// Factory constructor para JSON
factory Poesia.fromJson(Map<String, dynamic> json);
// Método para converter para JSON
Map<String, dynamic> toJson();
}
🎨 Funcionalidades
Principais Recursos
-
Exibição Aleatória de Poesias
- Geração aleatória de poesias do arquivo JSON
- Prevenção de repetição imediata da mesma poesia
- Histórico de poesias visualizadas
-
Reprodução de Vídeos do YouTube
- Player integrado do YouTube
- Reprodução a partir do tempo específico (
startTime)
- Controles de play/pause
- Navegação de volta para a poesia
-
Interface Adaptativa para Wear OS
- Suporte para formatos circulares e retangulares
- Detecção automática do formato do relógio
- Modo ambiente (ambient mode) para economia de bateria
- Layouts otimizados para telas pequenas
-
Design Personalizado
- Fonte personalizada "Cookie" para estilo único
- Tema customizado com cores específicas
- Transições suaves entre telas
- Cards com bordas arredondadas e elevação
-
Gerenciamento de Estado Reativo
- Atualização automática da UI quando dados mudam
- Loading states durante carregamento
- Tratamento de erros com feedback visual
🔧 Configurações Avançadas
Análise de Código
O projeto utiliza flutter_lints para análise estática de código. As configurações estão em analysis_options.yaml:
- Regras de lint recomendadas do Flutter
- Customização de regras disponível através de comentários no arquivo
Build e Deploy
Build para Wear OS
flutter build apk --release
Build específico para Wear OS
O Flutter detecta automaticamente a plataforma Wear OS através do wear_plus e gera o APK apropriado.
Variáveis de Ambiente
Nenhuma variável de ambiente é necessária para o funcionamento básico do aplicativo. O arquivo poesias.json é carregado localmente dos assets.
📱 Uso do Aplicativo
- Visualizar Poesia: Ao abrir o aplicativo, uma poesia aleatória é exibida automaticamente
- Nova Poesia: Toque no botão de atualizar (ícone de renovação) para gerar uma nova poesia aleatória
- Reproduzir Vídeo: Toque no botão de play para abrir o player do YouTube com o vídeo da música
- Voltar: No player, toque no botão de voltar para retornar à visualização da poesia
🎯 Melhorias Futuras
📄 Licença
Este projeto é inspirado no projeto Filosofunk que utiliza licença MIT.
🙏 Agradecimentos
- Projeto original Filosofunk por Igor Rozani
- Comunidade Flutter
- Contribuidores do projeto
📞 Contribuindo
Contribuições são bem-vindas! Para adicionar novas poesias, edite o arquivo assets/poesias.json seguindo a estrutura descrita acima.
Desenvolvido com ❤️ usando Flutter para Wear OS