Benjamín Moraga
open main menu
Part of series: portfolio-projects

MiniWeather – Aplicación de clima minimalista en Flutter

/ 3 min read
Última actualización:

🌦️ MiniWeather – Aplicación de clima minimalista en Flutter

MiniWeather es una aplicación de clima desarrollada en Flutter, cuyo objetivo principal no es competir en el mercado de apps meteorológicas, sino servir como proyecto de portafolio.
La aplicación refleja mi manera de trabajar, mi enfoque técnico y la aplicación de distintas habilidades que he aprendido en mi formación como desarrollador móvil.


🎯 Origen de la idea

La idea de crear MiniWeather surgió con un propósito claro: demostrar mis capacidades en Flutter.
Quería un proyecto que me permitiera aplicar distintas áreas del desarrollo móvil, como el uso de arquitectura limpia, la gestión de estados, la persistencia de datos y la integración con servicios externos.

MiniWeather es totalmente gratuita y sin publicidad, porque su finalidad es mostrar un resultado convincente y profesional, no comercial.


🛠️ Decisiones técnicas

  • Flutter como framework
    Elegí Flutter porque resulta intuitivo, entretenido y permite compilar de forma nativa en múltiples plataformas (Android, iOS, Windows, etc.).
    A diferencia de React Native, que utiliza un bridge, o de Kotlin/Swift que implican mantener dos proyectos distintos, Flutter me permitió desarrollar una app robusta y multiplataforma con un solo código base.

  • Arquitectura limpia
    Implementé Clean Architecture porque fue el enfoque con el que aprendí Flutter y porque ofrece un proyecto ordenado y escalable.
    Separar las capas de configuración, domain, infrastructure y presentación facilita el mantenimiento y la comprensión del código.

  • Riverpod como gestor de estado
    Escogí Riverpod por su robustez y flexibilidad. Es una evolución de Provider (creado por el mismo autor) y más sencillo de adaptar que BLoC, el cual suele ser más adecuado para aplicaciones de gran escala.

  • WeatherAPI como proveedor de datos
    Al inicio probé con OpenMeteo, pero decidí cambiarme a WeatherAPI por su mayor estabilidad.
    Su plan gratuito incluye una API Key personal, lo que garantiza respuestas más confiables y rápidas en comparación con servicios que no requieren autenticación.

  • SharedPreferences para persistencia
    El almacenamiento local en MiniWeather se limita a configuraciones básicas (como la unidad de medida entre °C o °F) y al último estado del clima registrado, para que el usuario tenga acceso a los datos incluso sin conexión.
    SharedPreferences fue la opción ideal por su simpleza y eficiencia.


⚙️ Desarrollo y retos

El mayor desafío fue la orquestación del flujo de datos: gestionar los permisos de ubicación, obtener las coordenadas del usuario, realizar el request a la API, guardar los datos en local storage y finalmente mostrarlos en pantalla.
Este flujo me permitió profundizar en la importancia de la gestión de estados, donde disfruté especialmente crear y organizar los distintos providers (para permisos, almacenamiento local, datos del clima, etc.).

Además, tuve que aprender desde cero cómo trabajar con geolocalización, incluyendo el manejo de permisos y la obtención de coordenadas, lo que representó un aprendizaje clave en este proyecto.


🚀 Resultado final

El resultado es una aplicación de clima minimalista que muestra:

  • El clima actual según la ubicación del usuario.
  • Pronóstico por hora (hasta 48 horas).
  • Pronóstico de 3 días (limitado por el plan gratuito de la API).
  • Adaptación automática al tema claro/oscuro del dispositivo.

MiniWeather es simple de usar, visualmente clara y sin registros complicados de leer.

Más allá de ser una app funcional, representa un ejemplo sólido de mi forma de trabajar: soluciones elegantes, minimalistas y técnicamente bien fundamentadas.


🔗 Repositorio: GitHub - MiniWeather
📱 Descarga: Playstore - MiniWeather