Bem-vindo ao Aplicativo NASA APOD em Flutter, uma aplicação móvel que exibe a Imagem Astronômica do Dia (APOD) fornecida pela NASA. Este aplicativo busca dados da API APOD da NASA, apresentando a imagem ou vídeo do dia juntamente com informações relevantes como título, descrição e data. Além disso, inclui funcionalidades adicionais como localização, modo escuro, widget para a tela inicial no Android e muito mais.
- Recursos
- Diagramas
- Capturas de Tela
- Tecnologias Utilizadas
- Estrutura do Projeto
- Instalação
- Uso
- Testes
- Pipeline de CI/CD
- Contribuição
- Licença
- Imagem Astronômica do Dia: Exibe a APOD da NASA, que pode ser uma imagem ou um vídeo.
- Informações Detalhadas: Mostra o título, data e descrição da APOD.
- Navegação por Datas: Permite que os usuários selecionem uma data específica para visualizar a APOD desse dia utilizando um DatePicker.
- Manipulação de Mídia:
- Imagens: Suporta funcionalidades de zoom e scroll.
- Vídeos: Integra um player de vídeo para reprodução direta no aplicativo.
- Favoritos: Usuários podem salvar suas APODs favoritas localmente e visualizá-las em uma tela dedicada.
- Localização:
- Tradução do texto da API e da interface do aplicativo para o idioma selecionado.
- Atualmente suporta Português (pt-BR), com a possibilidade de adicionar mais idiomas facilmente.
- Suporte a Temas:
- Implementa Modo Claro e Modo Escuro para uma melhor experiência do usuário.
- Design Responsivo:
- Otimizado para smartphones e tablets.
- Widget para Tela Inicial (Android):
- Permite que os usuários adicionem um widget à tela inicial exibindo a APOD.
- Gerenciamento de Estado:
- Utiliza uma solução personalizada com
ChangeNotifierpara simplicidade e eficiência.
- Utiliza uma solução personalizada com
- Controle de Carregamento:
- Implementa
InheritedNotifierpara gerenciar estados de carregamento em todos os widgets.
- Implementa
- Desempenho Otimizado:
- Cache de imagens utilizando
cached_network_imagepara reduzir o consumo de dados e melhorar os tempos de carregamento.
- Cache de imagens utilizando
- Rotas Personalizadas:
- Implementação de rotas próprias com o mínimo de dependências de terceiros.
- Testes Unitários:
- Inclui testes unitários para funcionalidades críticas.
- Gerenciamento de Estado Avançado:
- Implementar
InheritedWidgetpara um melhor controle de estado localizado dentro dos widgets sem reconstruir a árvore principal.
- Implementar
- Cache de Vídeos:
- Melhorar a reprodução de vídeos adicionando mecanismos de cache.
- Localização Expandida:
- Adicionar suporte para mais idiomas além do português.
app_funcionality.mov
- Framework: Flutter
- Linguagem: Dart
- Gerenciamento de Estado:
ChangeNotifierpersonalizado - API: NASA APOD API
- Armazenamento Local:
shared_preferencesouhive - Localização: Framework de localização do Flutter
- Cache de Imagens:
cached_network_image - Testes: Testes unitários
app
├── core
│ ├── components
│ ├── config
│ ├── entities
│ ├── environment
│ ├── extensions
│ ├── http
│ │ └── failures
│ ├── l10n
│ ├── mixins
│ ├── routes
│ ├── templates
│ │ └── notifiers
│ ├── theme
│ ├── types
│ ├── utils
│ └── widgets
└── modules
├── favorites_details
│ ├── data
│ │ ├── datasources
│ │ ├── repositories
│ │ └── services
│ ├── domain
│ │ ├── repositories
│ │ ├── services
│ │ └── usecases
│ └── presentation
│ ├── pages
│ ├── viewmodel
│ └── widgets
├── favorites_list
│ ├── data
│ │ ├── datasources
│ │ └── repositories
│ ├── domain
│ │ ├── repositories
│ │ └── usecases
│ └── presentation
│ ├── pages
│ ├── viewmodel
│ └── widgets
└── home
├── data
│ ├── datasources
│ ├── repositories
│ └── services
├── domain
│ ├── repositories
│ ├── services
│ └── usecases
└── presentation
├── common
├── page
├── viewmodel
└── widgets
- Flutter SDK: Certifique-se de ter a versão 3.27.2 do Flutter instalada. Guia de Instalação
- Dart SDK: Certifique-se de ter a versão 3.6.1 do Dart SDK instalada. Guia de Instalação
- Chave de API da NASA: Registre-se e obtenha uma chave de API no Portal de APIs da NASA.
-
Clone o Repositório
git clone https://github.com/Yhan17/apod.git cd nasa_apod_flutter_app -
Instale as Dependências
flutter pub get
-
Configure a Chave da API
-
Crie um arquivo
development.envna raiz do diretório. -
Adicione sua chave de API da NASA:
BASE_URL=api_base_da_nasa API_KEY=sua_chave_api_aqui
-
-
Execute o Aplicativo
flutter run --dart-define-from-file development.env
- Tela Inicial: Exibe a Imagem ou Vídeo Astronômico do Dia juntamente com seu título, descrição e data.
- Seleção de Data: Toque no seletor de data para escolher uma data diferente e visualizar a APOD correspondente.
- Favoritos: Toque no ícone de favorito para salvar uma APOD nos seus favoritos. Acesse seus favoritos na tela dedicada.
- Localização: O aplicativo está disponível atualmente em Português (pt-BR). Para adicionar mais idiomas, estenda os arquivos de localização.
- Alternância de Tema: Alterne entre os modos claro e escuro nas configurações ou diretamente no aplicativo.
- Widget Android: Adicione o widget APOD à tela inicial do seu dispositivo Android para acesso rápido.
O projeto inclui testes unitários para funcionalidades críticas.
flutter testEste projeto utiliza GitHub Actions para integração contínua e entrega contínua (CI/CD). A pipeline foi configurada para garantir a qualidade do código e facilitar a distribuição do aplicativo.
- Very Good Ventures: Utilizado para cobertura de testes, garantindo que o aplicativo mantenha um alto padrão de qualidade.
- GitHub Actions: Automatiza o processo de build, testes e distribuição do APK.
- Cobertura de Testes: Utiliza o Very Good Ventures para medir e reportar a cobertura dos testes, assegurando que as funcionalidades críticas estejam bem testadas.
- Build Automatizado: Sempre que há um push ou pull request no repositório, o GitHub Actions realiza o build do aplicativo automaticamente.
- Distribuição de APK: O APK gerado pelo build é armazenado como um artifact nas ações do GitHub, permitindo que seja facilmente baixado e testado.
Após a execução bem-sucedida da pipeline, o APK estará disponível para download nos artifacts das GitHub Actions. Siga os passos abaixo:
- Acesse a aba Actions no repositório do GitHub.
- Selecione o workflow mais recente.
- Navegue até a seção de artifacts e baixe o APK gerado.
- Minimalismo nas Bibliotecas: O projeto foi desenvolvido utilizando o mínimo possível de bibliotecas de terceiros, reduzindo a complexidade e facilitando a manutenção.
- Gerenciamento de Estado e Rotas Proprietárias: Implementações próprias para gerenciamento de estado e rotas foram desenvolvidas para atender às necessidades específicas do projeto, garantindo maior controle e flexibilidade.
Contribuições são bem-vindas! Siga os passos abaixo:
-
Fork o Repositório
-
Crie uma Branch de Funcionalidade
git checkout -b feature/SuaFuncionalidade
-
Comite suas Alterações
git commit -m "Adiciona SuaFuncionalidade" -
Envie para a Branch
git push origin feature/SuaFuncionalidade
-
Abra um Pull Request
Este projeto está licenciado sob a Licença MIT.
Para quaisquer dúvidas ou feedback, sinta-se à vontade para entrar em contato comigo através do yhannunesleal@gmail.com.




















