diegoRodicio

View Categories

🌗 Cambiar o tema con setState

🌗 Cambiar o tema cun interruptor

No Tema 3.2 aprendemos a configurar os temas claro e escuro dunha aplicación, pero escollemos o modo directamente no código.

Repaso do Tema 3.2: configurar os temas claro e escuro
Repaso do Tema 3.2: configurar os temas claro e escuro

💡 Neste apartado imos aprender a cambiar entre o tema claro e o escuro mentres a aplicación está en funcionamento, sen necesidade de modificar o código.

Para iso:

  • Engadiremos un interruptor (SwitchListTile) que permitirá ao usuario escoller o modo que prefira.
  • Gardaremos esa elección nunha variable booleana (bool) do State.
  • Utilizaremos setState para actualizar a interface cada vez que cambie o interruptor.

Deste xeito, veremos como combinar a xestión do estado cos temas de Flutter para que a aparencia de toda a aplicación cambie automaticamente segundo a elección do usuario.

Ademais, utilizaremos a propiedade colorSchemeSeed de ThemeData para xerar automaticamente un esquema de cores a partir dunha cor inicial. É unha forma máis sinxela de conseguir un resultado similar ao que obtivemos con ColorScheme.fromSeed no Tema 3.2.

🧪 Exemplo completo

Neste programa, ao activar ou desactivar o interruptor, cambia automaticamente o tema de toda a aplicación, incluíndo o fondo e a tarxeta, e non só a cor do propio interruptor.

🔗 DartPad:

O operador condicional ?: permite escoller entre dous valores segundo se cumpra ou non unha condición. Neste exemplo, se _escuro é true, utilizamos ThemeMode.dark; se é false, utilizamos ThemeMode.light.

Tamén existe ThemeMode.system, que permite adaptar automaticamente o tema á configuración do dispositivo, como vimos no Tema 3.2.

A elección pérdese ao reiniciar a aplicación. Para gardala entre execucións, consulta as preferencias do Tema 3.6.

Cambio entre o modo claro e o escuro cun interruptor
Cambio entre o modo claro e o escuro cun interruptor

📚 Consulta: