Introducir nuevos roles de ColorScheme para Material 3
'ColorScheme' introduce nuevos roles de color para alinearse mejor con Material Design 3. El método 'ColorScheme.fromSeed' también se actualiza para admitir los colores recién añadidos.
Resumen
#Los nuevos roles de color en ColorScheme incluyen
siete superficies y contenedores basados en tonos, y doce colores de acento para
los grupos primary, secondary y tertiary.
Esta actualización marca como obsoletos tres roles de color existentes:
background, onBackground y surfaceVariant.
El ColorScheme construido por el método ColorScheme.fromSeed
actualizado ahora
genera valores diferentes en comparación con la versión anterior,
adaptándose a las directrices de Material Design 3.
Contexto
#Los colores de superficie basados en tonos incluyen:
surfaceBrightsurfaceDimsurfaceContainersurfaceContainerLowsurfaceContainerLowestsurfaceContainerHighsurfaceContainerHighest
Estos cambios ayudan a eliminar el uso de surfaceTintColor de los widgets y
reemplazan el antiguo modelo basado en opacidad que aplicaba una superposición
tintada sobre las superficies en función de su elevación.
El surfaceTintColor predeterminado para todos los widgets ahora es null y
su color de fondo predeterminado ahora se basa en los
nuevos colores de superficie basados en tonos.
ColorScheme.fromSeed también se ha actualizado para utilizar el último algoritmo
del paquete Material color utilities.
Este cambio evita que el ColorScheme construido sea demasiado brillante,
incluso si el color de origen parece brillante y
tenía una alta saturación (contiene poco negro, blanco y tonos de gris).
Guía de migración
#Las diferencias causadas por el ColorScheme.fromSeed actualizado y
los nuevos roles de color deberían ser pequeñas y aceptables.
Sin embargo, al proporcionar un color semilla más brillante a ColorScheme.fromSeed,
podría construir una versión de ColorScheme relativamente más oscura.
Para forzar que el resultado siga siendo brillante,
establece dynamicSchemeVariant: DynamicSchemeVariant.fidelity en
ColorScheme.fromSeed. Por ejemplo:
Código antes de la migración:
ColorScheme.fromSeed(
seedColor: Color(0xFF0000FF), // Bright blue
)
Código después de la migración:
ColorScheme.fromSeed(
seedColor: Color(0xFF0000FF), // Bright blue
dynamicSchemeVariant: DynamicSchemeVariant.fidelity,
)
Material Design 3 elimina 3 colores.
Para configurar la apariencia de los componentes de material,
background debe reemplazarse por surface,
onBackground debe reemplazarse por onSurface y
surfaceVariant debe migrarse a surfaceContainerHighest.
Código antes de la migración:
final ColorScheme colorScheme = ColorScheme();
MaterialApp(
theme: ThemeData(
//...
colorScheme: colorScheme.copyWith(
background: myColor1,
onBackground: myColor2,
surfaceVariant: myColor3,
),
),
//...
)
Código después de la migración:
final ColorScheme colorScheme = ColorScheme();
MaterialApp(
theme: ThemeData(
//...
colorScheme: colorScheme.copyWith(
surface: myColor1,
onSurface: myColor2,
surfaceContainerHighest: myColor3,
),
),
//...
)
Los componentes personalizados que solían consultar ColorScheme.background,
ColorScheme.onBackground y ColorScheme.surfaceVariant
ahora pueden consultar en su lugar
ColorScheme.surface, ColorScheme.onSurface y
ColorScheme.surfaceContainerHighest.
Código antes de la migración:
Color myColor1 = Theme.of(context).colorScheme.background;
Color myColor2 = Theme.of(context).colorScheme.onBackground;
Color myColor3 = Theme.of(context).colorScheme.surfaceVariant;
Código después de la migración:
Color myColor1 = Theme.of(context).colorScheme.surface;
Color myColor2 = Theme.of(context).colorScheme.onSurface;
Color myColor3 = Theme.of(context).colorScheme.surfaceContainerHighest;
Timeline
#Introducido en la versión: 3.21.0-4.0.pre
En la versión estable: 3.22.0
Referencias
#Issues relevantes:
- Soporte para roles de ColorScheme de contenedor de superficie y superficie basados en tonos
- Soporte para variante de fidelidad para ColorScheme.fromSeed
PRs relevantes:
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.