Probando theme_provider en Flutter

Alfredo Bautista Santos
4 min readMar 15, 2020

--

¡Buenas a todos! En este post vamos a hablar de un paquete relativamente joven que nos permite cambiar fácilmente de tema actual en nuestra aplicación

Creando nuestra aplicación

Después de esta acción seleccionaremos donde queremos inicializar el proyecto y nos creará una estructura de proyecto de Flutter.

Theme_provider

Podemos encontrar este paquete alojado en pub.dev y siguiendo las instrucciones de instalación donde únicamente deberemos añadirlo a nuestro pubspec.yaml ya lo tendríamos listo para usar

Uso en nuestro código

Si seguimos los pasos de su documentación nos explica que para poder empezar a usar su paquete debemos importarlo en los ficheros que queramos usar y únicamente encapsular la parte de la aplicación donde queramos cambiar nuestros temas dinámicamente.

En nuestro caso encapsularemos toda nuestra MaterialApp (Donde comienza nuestra aplicación) dentro del objeto ThemeProvider

Para declarar los paquetes que queremos usar declaramos un array dentro de la propiedad themes del objeto que contendrá nuestra lista de AppTheme

El objeto AppTheme recibe como parámetros un id único por cada tema como String y un data que recibe un ThemeData. (En versiones anteriores del paquete 0.32 necesitaba un description para poder funcionar, a partir de la 0.33 ya no es necesario aunque en la fecha que escribo el post, todavía no está disponible).

Ahora necesitamos un objeto que se nutra de nuesto ThemeProvider, para ello tenemos otro objeto llamado ThemeConsumer que encapsulará los widgets que podrán hacer uso de nuestro provider de temas. En nuestro caso encapsulará a nuestro HomePage.

Cambio entre temas

El paquete nos proporciona dos métodos que nos permiten cambiar de tema. El primero nos permite cambiar secuencialmente de tema con el uso de ThemeProvider

Usaremos un MaterialButton para cambiar el tema por cada pulsación del usuario

Cuando lo probamos:

El segundo método nos permite cambiar entre temas usando el id con el que hemos guardado el tema, creamos otros botones que nos aplicarán directamente el tema que elijamos

Con el siguiente resultado

Preguntar al usuario sobre que tema prefiere

El paquete nos provee de otros objetos para poder preguntar al usuario que tema escoger y aplicar de los que tenemos guardados, en este caso con un ThemeDialog nos muestra todos los temas

Aquí podemos ver como se despliega

Guardar la preferencia del tema

El paquete también nos provee de unos métodos para poder guardar en disco los temas que el usuario ha elegido y también para poder cargar el último tema seleccionado al inicio de la aplicación

Agradecimientos

Vemos como este paquete nos brinda la opción de cambiar el tema actual de la aplicación de una forma muy sencilla y con una gran documentación. Agradecer al autor el tiempo dedicado para hacer este proyecto y animaros a contribuir de forma activa en el github del proyecto.

En este repo tendréis todo el código de la aplicación que he creado para este post

¡Un saludo y hasta la próxima!

--

--

Alfredo Bautista Santos
Alfredo Bautista Santos

Written by Alfredo Bautista Santos

Sysadmin and web developer. Co-organizer of GDGMarbella & FlutterConf in Marbella, Spain. Flutter enthusiastic.

No responses yet