Esta es una aplicación Flutter que muestra una lista de artículos y permite a los usuarios ver los detalles de cada artículo. La aplicación implementa las mejores prácticas de arquitectura limpia y utiliza el patrón BLoC para la gestión del estado.
- Muestra una lista de artículos desde una API remota
- Permite ver los detalles de cada artículo
- Implementa almacenamiento local para acceso sin conexión usando Hive
- Soporta cambio entre modo claro y oscuro
- Implementa internacionalización (soporte para inglés y español)
- Utiliza inyección de dependencias con GetIt
- Maneja errores con diálogos de alerta
El proyecto sigue una arquitectura limpia y está organizado en las siguientes capas:
core
: Contiene funcionalidades centrales como el cliente API.data
: Implementa la capa de datos, incluyendo fuentes de datos remotas y locales.domain
: Define las entidades de dominio, casos de uso y interfaces de repositorio.presentation
: Contiene la interfaz de usuario, incluyendo páginas, widgets y BLoCs.
- Al iniciar la aplicación, se configura la inyección de dependencias con GetIt.
- La página principal (
ArticleListPage
) muestra una lista de artículos. - Al cargar la página, se dispara un evento para obtener los artículos.
- El
ArticleListBloc
maneja este evento y obtiene los artículos del repositorio. - Si hay una conexión a internet, los artículos se obtienen de la API remota y se almacenan localmente.
- Si no hay conexión, se muestran los artículos almacenados localmente.
- Los usuarios pueden hacer clic en un artículo para ver sus detalles.
- Los usuarios pueden cambiar entre modo claro y oscuro usando el botón en la barra de aplicaciones.
La aplicación utiliza un BlocConsumer
en la ArticleListPage
para manejar errores. Cuando ocurre un error al cargar los artículos, se muestra al usuario el mensaje de error.
La aplicación utiliza Hive para el almacenamiento local de artículos. Esto permite que la aplicación funcione sin conexión una vez que los artículos se han cargado inicialmente.
La aplicación soporta temas claro y oscuro. El ThemeBloc
maneja el cambio entre estos temas, que se puede activar mediante un botón en la barra de aplicaciones.
La aplicación está configurada para soportar múltiples idiomas, actualmente inglés y español. Los archivos de traducción se encuentran en la carpeta l10n
.
- Asegúrate de tener Flutter instalado en tu sistema.
- Clona este repositorio.
- Ejecuta
flutter pub get
para obtener las dependencias. - Ejecuta
flutter pub run build_runner build
para generar el código necesario para Hive. - Ejecuta
flutter run
para iniciar la aplicación.
flutter_bloc
: Para la gestión del estado.get_it
: Para la inyección de dependencias.hive
: Para el almacenamiento local.dio
: Para las llamadas a la API.go_router
: Para la navegación.