Las propiedades accent de ThemeData han sido desaprobadas
Las propiedades accentColor, accentColorBrightness, accentIconTheme y accentTextTheme de ThemeData han sido deprecadas.
Resumen
#Las propiedades accentColor, accentColorBrightness, accentIconTheme y accentTextTheme de ThemeData han sido deprecadas.
La especificación de Material Design spec ya no especifica ni utiliza un color "accent" (acento)
para los componentes de Material. Los valores predeterminados para los colores de los componentes
se derivan del color scheme (esquema de colores) del tema general.
El secondary color (color secundario) del ColorScheme
se utiliza ahora típicamente en lugar de
accentColor y el onSecondary color
se utiliza cuando se necesita un color de contraste.
Contexto
#Esto fue una pequeña parte del proyecto Material Theme System Updates.
A partir de Flutter 1.17, las propiedades accent de ThemeData - accentColor,
accentColorBrightness, accentIconTheme y accentTextTheme - ya no
eran utilizadas por la biblioteca de Material. Habían sido reemplazadas por
dependencias en las propiedades colorScheme
y
textTheme
del tema como parte del objetivo a largo plazo de
hacer que las configuraciones predeterminadas de los componentes de material dependan
casi exclusivamente de estas dos propiedades.
La motivación de estos cambios es hacer que el sistema de temas sea más fácil de
entender y usar. Los colores predeterminados para todos los componentes deben ser
definidos por los propios componentes y basarse en el esquema de colores.
Los valores predeterminados para tipos de componentes específicos se pueden invalidar
con temas específicos de componentes como FloatingActionButtonThemeData
o
CheckBoxTheme. Anteriormente, propiedades como accentColor eran utilizadas por un
puñado de tipos de componentes y solo en algunas situaciones, lo que dificultaba
entender las implicaciones de invalidarlas.
Descripción del cambio
#Las propiedades accentColor, accentColorBrightness, accentIconTheme y accentTextTheme de ThemeData han sido deprecadas porque la biblioteca de Material ya no las utiliza.
Guía de migración
#Tema de la aplicación
#Los valores de ThemeData ya no necesitan especificar accentColor,
accentColorBrightness, accentIconTheme o accentTextTheme.
Para configurar la apariencia de los componentes de material aproximadamente de la misma manera que antes, especifica el color secundario del esquema de colores en lugar de accentColor.
Código antes de la migración:
MaterialApp(
theme: ThemeData(accentColor: myColor),
// ...
);
Código después de la migración:
final ThemeData theme = ThemeData();
MaterialApp(
theme: theme.copyWith(
colorScheme: theme.colorScheme.copyWith(secondary: myColor),
),
//...
)
accentColor
#
El color de ColorScheme más cercano compatible
con versiones anteriores es
ColorScheme.secondary. Para apegarse lo más posible a las últimas
directrices de Material Design, se puede sustituir por ColorScheme.primary en su lugar.
Si se necesita un color de contraste, entonces utiliza ColorScheme.onSecondary.
Los componentes personalizados que solían buscar el accentColor del tema, pueden buscar
ColorScheme.secondary en su lugar.
Código antes de la migración:
Color myColor = Theme.of(context).accentColor;
Código después de la migración:
Color myColor = Theme.of(context).colorScheme.secondary;
accentColorBrightness
#
El método estático ThemeData.estimateBrightnessForColor()
se puede usar
para calcular el brillo de cualquier color.
accentTextTheme
#
Esto consistía en TextStyles blancos para temas oscuros,
y TextStyles negros para temas claros. En la mayoría de los casos se puede usar textTheme
en su lugar. Un modismo común era hacer referencia a un TextStyle de
accentTextTheme, ya que se garantizaba que el color del estilo de texto contrastara
bien con el color de acento (ahora ColorScheme.secondaryColor).
Para obtener el mismo resultado ahora, especifica el color del estilo de texto como
ColorScheme.onSecondary:
Código antes de la migración:
TextStyle style = Theme.of(context).accentTextTheme.headline1;
Código después de la migración:
final ThemeData theme = Theme.of(context);
TextStyle style = theme.textTheme.headline1.copyWith(
color: theme.colorScheme.onSecondary,
)
accentIconTheme
#
Esta propiedad solo se había utilizado para configurar el color de los iconos
dentro de un FloatingActionButton. Ahora es posible configurar el color del icono
directamente o con FloatingActionButtonThemeData. Consulta
FloatingActionButton and ThemeData's accent properties.
Timeline
#Llegó en la versión: 2.3.0-0.1.pre
En la versión estable: 2.5
Referencias
#Documentación de la API:
Issues relevantes:
PRs relevantes:
Otros:
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.