Component theme normalization
Summary
#
CardTheme, DialogTheme and TabBarTheme were refactored to
conform to Flutter's conventions for component themes.
CardThemeData, DialogThemeData, and TabBarThemeData
were added to
define overrides for the defaults of the component visual properties.
Releases of Flutter continue to normalize component themes like these for
a more consistent theming experience in the material library.
Migration guide
#In ThemeData:
-
The type of the
cardThemeproperty has been changed fromCardThemetoCardThemeData. -
The type of the
dialogThemeproperty has been changed from theDialogThemetoDialogThemeData. -
The type of
tabBarThemeproperty has been changed fromTabBarThemetoTabBarThemeData.
The return type of the component theme xTheme.of() methods and
Theme.of().xTheme have also changed to xThemeData accordingly.
Code before migration:
final CardTheme cardTheme = Theme.of(context).cardTheme;
final CardTheme cardTheme = CardTheme.of(context);
final DialogTheme dialogTheme = Theme.of(context).dialogTheme;
final DialogTheme dialogTheme = DialogTheme.of(context);
final TabBarTheme tabBarTheme = Theme.of(context).tabBarTheme;
final TabBarTheme tabBarTheme = TabBarTheme.of(context);
Code after migration:
final CardThemeData cardTheme = Theme.of(context).cardTheme;
final CardThemeData cardTheme = CardTheme.of(context);
final DialogThemeData dialogTheme = Theme.of(context).dialogTheme;
final DialogThemeData dialogTheme = DialogTheme.of(context);
final TabBarThemeData tabBarTheme = Theme.of(context).tabBarTheme;
final TabBarThemeData tabBarTheme = TabBarTheme.of(context);
Timeline
#
Landed in version: 3.27.0-0.0.pre
Stable release: 3.27
References
#API documentation:
Relevant PRs:
Unless stated otherwise, the documentation on this site reflects Flutter 3.35.5. Page last updated on 2025-10-30. View source or report an issue.