¿Por qué al cambiar el color del tema a azul todo sigue igual? Colores globales vs. colores en duro
Una situación muy habitual al trabajar con temas en Flutter ocurre cuando modificamos el color semilla o el tema global en MaterialApp (por ejemplo, cambiando a seedColor: Colors.blue) y comprobamos desconcertados que los componentes de la pantalla continúan mostrándose exactamente con los mismos colores que antes.
Este comportamiento responde a una regla fundamental en Flutter: la jerarquía de precedencia de estilos.
Jerarquía de precedencia de estilos en Flutter
Sección titulada «Jerarquía de precedencia de estilos en Flutter»- Estilo local directo en el widget (Prioridad Máxima / Valor cableado): Si en un botón se especificó
ElevatedButton(style: ElevatedButton.styleFrom(backgroundColor: Colors.teal), ...)o en una vista se asignóContainer(color: Colors.amber, ...), ese valor directo tiene precedencia absoluta. Es un estilo forzado manualmente que sobrescribe e ignora por completo cualquier directiva del tema global. - Tema de ámbito local (
Theme(data: ...)): Aplica exclusivamente al subárbol de widgets que envuelve. - Tema Global (
MaterialApp(theme: ...)): Afecta únicamente a aquellos widgets que no tienen ningún color asignado directamente en duro y que, por tanto, delegan su apariencia en el sistema de diseño global.