ThemeData constructor Null safety

ThemeData(
  1. {bool? applyElevationOverlayColor,
  2. NoDefaultCupertinoThemeData? cupertinoOverrideTheme,
  3. Iterable<ThemeExtension>? extensions,
  4. InputDecorationTheme? inputDecorationTheme,
  5. MaterialTapTargetSize? materialTapTargetSize,
  6. PageTransitionsTheme? pageTransitionsTheme,
  7. TargetPlatform? platform,
  8. ScrollbarThemeData? scrollbarTheme,
  9. InteractiveInkFeatureFactory? splashFactory,
  10. VisualDensity? visualDensity,
  11. bool? useMaterial3,
  12. ColorScheme? colorScheme,
  13. Color? colorSchemeSeed,
  14. Brightness? brightness,
  15. MaterialColor? primarySwatch,
  16. Color? primaryColor,
  17. Color? primaryColorLight,
  18. Color? primaryColorDark,
  19. Color? focusColor,
  20. Color? hoverColor,
  21. Color? shadowColor,
  22. Color? canvasColor,
  23. Color? scaffoldBackgroundColor,
  24. Color? bottomAppBarColor,
  25. Color? cardColor,
  26. Color? dividerColor,
  27. Color? highlightColor,
  28. Color? splashColor,
  29. Color? selectedRowColor,
  30. Color? unselectedWidgetColor,
  31. Color? disabledColor,
  32. Color? secondaryHeaderColor,
  33. Color? backgroundColor,
  34. Color? dialogBackgroundColor,
  35. Color? indicatorColor,
  36. Color? hintColor,
  37. Color? errorColor,
  38. Color? toggleableActiveColor,
  39. String? fontFamily,
  40. Typography? typography,
  41. TextTheme? textTheme,
  42. TextTheme? primaryTextTheme,
  43. IconThemeData? iconTheme,
  44. IconThemeData? primaryIconTheme,
  45. AppBarTheme? appBarTheme,
  46. MaterialBannerThemeData? bannerTheme,
  47. BottomAppBarTheme? bottomAppBarTheme,
  48. BottomNavigationBarThemeData? bottomNavigationBarTheme,
  49. BottomSheetThemeData? bottomSheetTheme,
  50. ButtonBarThemeData? buttonBarTheme,
  51. ButtonThemeData? buttonTheme,
  52. CardTheme? cardTheme,
  53. CheckboxThemeData? checkboxTheme,
  54. ChipThemeData? chipTheme,
  55. DataTableThemeData? dataTableTheme,
  56. DialogTheme? dialogTheme,
  57. DividerThemeData? dividerTheme,
  58. DrawerThemeData? drawerTheme,
  59. ElevatedButtonThemeData? elevatedButtonTheme,
  60. FloatingActionButtonThemeData? floatingActionButtonTheme,
  61. ListTileThemeData? listTileTheme,
  62. NavigationBarThemeData? navigationBarTheme,
  63. NavigationRailThemeData? navigationRailTheme,
  64. OutlinedButtonThemeData? outlinedButtonTheme,
  65. PopupMenuThemeData? popupMenuTheme,
  66. ProgressIndicatorThemeData? progressIndicatorTheme,
  67. RadioThemeData? radioTheme,
  68. SliderThemeData? sliderTheme,
  69. SnackBarThemeData? snackBarTheme,
  70. SwitchThemeData? switchTheme,
  71. TabBarTheme? tabBarTheme,
  72. TextButtonThemeData? textButtonTheme,
  73. TextSelectionThemeData? textSelectionTheme,
  74. TimePickerThemeData? timePickerTheme,
  75. ToggleButtonsThemeData? toggleButtonsTheme,
  76. TooltipThemeData? tooltipTheme,
  77. ExpansionTileThemeData? expansionTileTheme,
  78. @Deprecated('No longer used by the framework, please remove any reference to it. ' 'This feature was deprecated after v1.23.0-4.0.pre.') bool? useTextSelectionTheme,
  79. @Deprecated('Use TextSelectionThemeData.selectionColor instead. ' 'This feature was deprecated after v1.26.0-18.0.pre.') Color? textSelectionColor,
  80. @Deprecated('Use TextSelectionThemeData.cursorColor instead. ' 'This feature was deprecated after v1.26.0-18.0.pre.') Color? cursorColor,
  81. @Deprecated('Use TextSelectionThemeData.selectionHandleColor instead. ' 'This feature was deprecated after v1.26.0-18.0.pre.') Color? textSelectionHandleColor,
  82. @Deprecated('Use colorScheme.secondary instead. ' 'For more information, consult the migration guide at ' 'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. ' 'This feature was deprecated after v2.3.0-0.1.pre.') Color? accentColor,
  83. @Deprecated('No longer used by the framework, please remove any reference to it. ' 'For more information, consult the migration guide at ' 'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. ' 'This feature was deprecated after v2.3.0-0.1.pre.') Brightness? accentColorBrightness,
  84. @Deprecated('No longer used by the framework, please remove any reference to it. ' 'For more information, consult the migration guide at ' 'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. ' 'This feature was deprecated after v2.3.0-0.1.pre.') TextTheme? accentTextTheme,
  85. @Deprecated('No longer used by the framework, please remove any reference to it. ' 'For more information, consult the migration guide at ' 'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. ' 'This feature was deprecated after v2.3.0-0.1.pre.') IconThemeData? accentIconTheme,
  86. @Deprecated('No longer used by the framework, please remove any reference to it. ' 'This feature was deprecated after v2.3.0-0.2.pre.') Color? buttonColor,
  87. @Deprecated('This "fix" is now enabled by default. ' 'This feature was deprecated after v2.5.0-1.0.pre.') bool? fixTextFieldOutlineLabel,
  88. @Deprecated('No longer used by the framework, please remove any reference to it. ' 'This feature was deprecated after v2.6.0-11.0.pre.') Brightness? primaryColorBrightness,
  89. @Deprecated('Use ThemeData.useMaterial3 or override ScrollBehavior.buildOverscrollIndicator. ' 'This feature was deprecated after v2.13.0-0.0.pre.') AndroidOverscrollIndicator? androidOverscrollIndicator}
)

Create a ThemeData that's used to configure a Theme.

The colorScheme and textTheme are used by the Material components to compute default values for visual properties. The API documentation for each component widget explains exactly how the defaults are computed.

When providing a ColorScheme, apps can either provide one directly with the colorScheme parameter, or have one generated for them by using the colorSchemeSeed and brightness parameters. A generated color scheme will be based on the tones of colorSchemeSeed and all of its contrasting color will meet accessibility guidelines for readability. (See ColorScheme.fromSeed for more details.)

If the app wants to customize a generated color scheme, it can use ColorScheme.fromSeed directly and then ColorScheme.copyWith on the result to override any colors that need to be replaced. The result of this can be used as the colorScheme directly.

For historical reasons, instead of using a colorSchemeSeed or colorScheme, you can provide either a primaryColor or primarySwatch to construct the colorScheme, but the results will not be as complete as when using generation from a seed color.

If colorSchemeSeed is non-null then colorScheme, primaryColor and primarySwatch must all be null.

The textTheme TextStyle colors are black if the color scheme's brightness is Brightness.light, and white for Brightness.dark.

To override the appearance of specific components, provide a component theme parameter like sliderTheme, toggleButtonsTheme, or bottomNavigationBarTheme.

See also:

Implementation

factory ThemeData({
  // GENERAL CONFIGURATION
  bool? applyElevationOverlayColor,
  NoDefaultCupertinoThemeData? cupertinoOverrideTheme,
  Iterable<ThemeExtension<dynamic>>? extensions,
  InputDecorationTheme? inputDecorationTheme,
  MaterialTapTargetSize? materialTapTargetSize,
  PageTransitionsTheme? pageTransitionsTheme,
  TargetPlatform? platform,
  ScrollbarThemeData? scrollbarTheme,
  InteractiveInkFeatureFactory? splashFactory,
  VisualDensity? visualDensity,
  bool? useMaterial3,
  // COLOR
  // [colorScheme] is the preferred way to configure colors. The other color
  // properties (as well as primaryColorBrightness, and primarySwatch)
  // will gradually be phased out, see https://github.com/flutter/flutter/issues/91772.
  ColorScheme? colorScheme,
  Color? colorSchemeSeed,
  Brightness? brightness,
  MaterialColor? primarySwatch,
  Color? primaryColor,
  Color? primaryColorLight,
  Color? primaryColorDark,
  Color? focusColor,
  Color? hoverColor,
  Color? shadowColor,
  Color? canvasColor,
  Color? scaffoldBackgroundColor,
  Color? bottomAppBarColor,
  Color? cardColor,
  Color? dividerColor,
  Color? highlightColor,
  Color? splashColor,
  Color? selectedRowColor,
  Color? unselectedWidgetColor,
  Color? disabledColor,
  Color? secondaryHeaderColor,
  Color? backgroundColor,
  Color? dialogBackgroundColor,
  Color? indicatorColor,
  Color? hintColor,
  Color? errorColor,
  Color? toggleableActiveColor,
  // TYPOGRAPHY & ICONOGRAPHY
  String? fontFamily,
  Typography? typography,
  TextTheme? textTheme,
  TextTheme? primaryTextTheme,
  IconThemeData? iconTheme,
  IconThemeData? primaryIconTheme,
  // COMPONENT THEMES
  AppBarTheme? appBarTheme,
  MaterialBannerThemeData? bannerTheme,
  BottomAppBarTheme? bottomAppBarTheme,
  BottomNavigationBarThemeData? bottomNavigationBarTheme,
  BottomSheetThemeData? bottomSheetTheme,
  ButtonBarThemeData? buttonBarTheme,
  ButtonThemeData? buttonTheme,
  CardTheme? cardTheme,
  CheckboxThemeData? checkboxTheme,
  ChipThemeData? chipTheme,
  DataTableThemeData? dataTableTheme,
  DialogTheme? dialogTheme,
  DividerThemeData? dividerTheme,
  DrawerThemeData? drawerTheme,
  ElevatedButtonThemeData? elevatedButtonTheme,
  FloatingActionButtonThemeData? floatingActionButtonTheme,
  ListTileThemeData? listTileTheme,
  NavigationBarThemeData? navigationBarTheme,
  NavigationRailThemeData? navigationRailTheme,
  OutlinedButtonThemeData? outlinedButtonTheme,
  PopupMenuThemeData? popupMenuTheme,
  ProgressIndicatorThemeData? progressIndicatorTheme,
  RadioThemeData? radioTheme,
  SliderThemeData? sliderTheme,
  SnackBarThemeData? snackBarTheme,
  SwitchThemeData? switchTheme,
  TabBarTheme? tabBarTheme,
  TextButtonThemeData? textButtonTheme,
  TextSelectionThemeData? textSelectionTheme,
  TimePickerThemeData? timePickerTheme,
  ToggleButtonsThemeData? toggleButtonsTheme,
  TooltipThemeData? tooltipTheme,
  ExpansionTileThemeData? expansionTileTheme,
  // DEPRECATED (newest deprecations at the bottom)
  @Deprecated(
    'No longer used by the framework, please remove any reference to it. '
    'This feature was deprecated after v1.23.0-4.0.pre.',
  )
  bool? useTextSelectionTheme,
  @Deprecated(
    'Use TextSelectionThemeData.selectionColor instead. '
    'This feature was deprecated after v1.26.0-18.0.pre.',
  )
  Color? textSelectionColor,
  @Deprecated(
    'Use TextSelectionThemeData.cursorColor instead. '
    'This feature was deprecated after v1.26.0-18.0.pre.',
  )
  Color? cursorColor,
  @Deprecated(
    'Use TextSelectionThemeData.selectionHandleColor instead. '
    'This feature was deprecated after v1.26.0-18.0.pre.',
  )
  Color? textSelectionHandleColor,
  @Deprecated(
    'Use colorScheme.secondary instead. '
    'For more information, consult the migration guide at '
    'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. '
    'This feature was deprecated after v2.3.0-0.1.pre.',
  )
  Color? accentColor,
  @Deprecated(
    'No longer used by the framework, please remove any reference to it. '
    'For more information, consult the migration guide at '
    'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. '
    'This feature was deprecated after v2.3.0-0.1.pre.',
  )
  Brightness? accentColorBrightness,
  @Deprecated(
    'No longer used by the framework, please remove any reference to it. '
    'For more information, consult the migration guide at '
    'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. '
    'This feature was deprecated after v2.3.0-0.1.pre.',
  )
  TextTheme? accentTextTheme,
  @Deprecated(
    'No longer used by the framework, please remove any reference to it. '
    'For more information, consult the migration guide at '
    'https://flutter.dev/docs/release/breaking-changes/theme-data-accent-properties#migration-guide. '
    'This feature was deprecated after v2.3.0-0.1.pre.',
  )
  IconThemeData? accentIconTheme,
  @Deprecated(
    'No longer used by the framework, please remove any reference to it. '
    'This feature was deprecated after v2.3.0-0.2.pre.',
  )
  Color? buttonColor,
  @Deprecated(
    'This "fix" is now enabled by default. '
    'This feature was deprecated after v2.5.0-1.0.pre.',
  )
  bool? fixTextFieldOutlineLabel,
  @Deprecated(
    'No longer used by the framework, please remove any reference to it. '
    'This feature was deprecated after v2.6.0-11.0.pre.',
  )
  Brightness? primaryColorBrightness,
  @Deprecated(
    'Use ThemeData.useMaterial3 or override ScrollBehavior.buildOverscrollIndicator. '
    'This feature was deprecated after v2.13.0-0.0.pre.'
  )
  AndroidOverscrollIndicator? androidOverscrollIndicator,
}) {
  // GENERAL CONFIGURATION
  cupertinoOverrideTheme = cupertinoOverrideTheme?.noDefault();
  extensions ??= <ThemeExtension<dynamic>>[];
  inputDecorationTheme ??= const InputDecorationTheme();
  platform ??= defaultTargetPlatform;
  switch (platform) {
    case TargetPlatform.android:
    case TargetPlatform.fuchsia:
    case TargetPlatform.iOS:
      materialTapTargetSize ??= MaterialTapTargetSize.padded;
      break;
    case TargetPlatform.linux:
    case TargetPlatform.macOS:
    case TargetPlatform.windows:
       materialTapTargetSize ??= MaterialTapTargetSize.shrinkWrap;
      break;
  }
  pageTransitionsTheme ??= const PageTransitionsTheme();
  scrollbarTheme ??= const ScrollbarThemeData();
  visualDensity ??= VisualDensity.adaptivePlatformDensity;
  useMaterial3 ??= false;
  final bool useInkSparkle = platform == TargetPlatform.android && !kIsWeb;
  splashFactory ??= useMaterial3
    ? useInkSparkle ? InkSparkle.splashFactory : InkRipple.splashFactory
    : InkSplash.splashFactory;

  // COLOR
  assert(colorScheme?.brightness == null || brightness == null || colorScheme!.brightness == brightness);
  assert(colorSchemeSeed == null || colorScheme == null);
  assert(colorSchemeSeed == null || primarySwatch == null);
  assert(colorSchemeSeed == null || primaryColor == null);
  final Brightness effectiveBrightness = brightness ?? colorScheme?.brightness ?? Brightness.light;
  final bool isDark = effectiveBrightness == Brightness.dark;
  if (colorSchemeSeed != null) {
    colorScheme = ColorScheme.fromSeed(seedColor: colorSchemeSeed, brightness: effectiveBrightness);

    // For surfaces that use primary color in light themes and surface color in dark
    final Color primarySurfaceColor = isDark ? colorScheme.surface : colorScheme.primary;
    final Color onPrimarySurfaceColor = isDark ? colorScheme.onSurface : colorScheme.onPrimary;

    // Default some of the color settings to values from the color scheme
    primaryColor = primarySurfaceColor;
    primaryColorBrightness = ThemeData.estimateBrightnessForColor(primarySurfaceColor);
    canvasColor ??= colorScheme.background;
    accentColor ??= colorScheme.secondary;
    accentColorBrightness ??= ThemeData.estimateBrightnessForColor(colorScheme.secondary);
    scaffoldBackgroundColor ??= colorScheme.background;
    bottomAppBarColor ??= colorScheme.surface;
    cardColor ??= colorScheme.surface;
    dividerColor ??= colorScheme.outline;
    backgroundColor ??= colorScheme.background;
    dialogBackgroundColor ??= colorScheme.background;
    indicatorColor ??= onPrimarySurfaceColor;
    errorColor ??= colorScheme.error;
    applyElevationOverlayColor ??= brightness == Brightness.dark;
  }
  applyElevationOverlayColor ??= false;
  primarySwatch ??= Colors.blue;
  primaryColor ??= isDark ? Colors.grey[900]! : primarySwatch;
  final Brightness estimatedPrimaryColorBrightness = estimateBrightnessForColor(primaryColor);
  primaryColorLight ??= isDark ? Colors.grey[500]! : primarySwatch[100]!;
  primaryColorDark ??= isDark ? Colors.black : primarySwatch[700]!;
  final bool primaryIsDark = estimatedPrimaryColorBrightness == Brightness.dark;
  toggleableActiveColor ??= isDark ? Colors.tealAccent[200]! : (accentColor ?? primarySwatch[600]!);
  accentColor ??= isDark ? Colors.tealAccent[200]! : primarySwatch[500]!;
  accentColorBrightness ??= estimateBrightnessForColor(accentColor);
  final bool accentIsDark = accentColorBrightness == Brightness.dark;
  focusColor ??= isDark ? Colors.white.withOpacity(0.12) : Colors.black.withOpacity(0.12);
  hoverColor ??= isDark ? Colors.white.withOpacity(0.04) : Colors.black.withOpacity(0.04);
  shadowColor ??= Colors.black;
  canvasColor ??= isDark ? Colors.grey[850]! : Colors.grey[50]!;
  scaffoldBackgroundColor ??= canvasColor;
  bottomAppBarColor ??= isDark ? Colors.grey[800]! : Colors.white;
  cardColor ??= isDark ? Colors.grey[800]! : Colors.white;
  dividerColor ??= isDark ? const Color(0x1FFFFFFF) : const Color(0x1F000000);
  // Create a ColorScheme that is backwards compatible as possible
  // with the existing default ThemeData color values.
  colorScheme ??= ColorScheme.fromSwatch(
    primarySwatch: primarySwatch,
    primaryColorDark: primaryColorDark,
    accentColor: accentColor,
    cardColor: cardColor,
    backgroundColor: backgroundColor,
    errorColor: errorColor,
    brightness: effectiveBrightness,
  );
  selectedRowColor ??= Colors.grey[100]!;
  unselectedWidgetColor ??= isDark ? Colors.white70 : Colors.black54;
  // Spec doesn't specify a dark theme secondaryHeaderColor, this is a guess.
  secondaryHeaderColor ??= isDark ? Colors.grey[700]! : primarySwatch[50]!;
  backgroundColor ??= isDark ? Colors.grey[700]! : primarySwatch[200]!;
  dialogBackgroundColor ??= isDark ? Colors.grey[800]! : Colors.white;
  indicatorColor ??= accentColor == primaryColor ? Colors.white : accentColor;
  hintColor ??= isDark ? Colors.white60 : Colors.black.withOpacity(0.6);
  errorColor ??= Colors.red[700]!;
  // The default [buttonTheme] is here because it doesn't use the defaults for
  // [disabledColor], [highlightColor], and [splashColor].
  buttonTheme ??= ButtonThemeData(
    colorScheme: colorScheme,
    // Defaults to the fill color for RaisedButtons for backwards compatibility.
    buttonColor: buttonColor ?? (isDark ? primarySwatch[600]! : Colors.grey[300]!),
    disabledColor: disabledColor,
    focusColor: focusColor,
    hoverColor: hoverColor,
    highlightColor: highlightColor,
    splashColor: splashColor,
    materialTapTargetSize: materialTapTargetSize,
  );
  disabledColor ??= isDark ? Colors.white38 : Colors.black38;
  highlightColor ??= isDark ? _kDarkThemeHighlightColor : _kLightThemeHighlightColor;
  splashColor ??= isDark ? _kDarkThemeSplashColor : _kLightThemeSplashColor;

  // TYPOGRAPHY & ICONOGRAPHY
  typography ??= useMaterial3 ? Typography.material2021(platform: platform) : Typography.material2014(platform: platform);
  TextTheme defaultTextTheme = isDark ? typography.white : typography.black;
  TextTheme defaultPrimaryTextTheme = primaryIsDark ? typography.white : typography.black;
  TextTheme defaultAccentTextTheme = accentIsDark ? typography.white : typography.black;
  if (fontFamily != null) {
    defaultTextTheme = defaultTextTheme.apply(fontFamily: fontFamily);
    defaultPrimaryTextTheme = defaultPrimaryTextTheme.apply(fontFamily: fontFamily);
    defaultAccentTextTheme = defaultAccentTextTheme.apply(fontFamily: fontFamily);
  }
  textTheme = defaultTextTheme.merge(textTheme);
  primaryTextTheme = defaultPrimaryTextTheme.merge(primaryTextTheme);
  iconTheme ??= isDark ? const IconThemeData(color: Colors.white) : const IconThemeData(color: Colors.black87);
  primaryIconTheme ??= primaryIsDark ? const IconThemeData(color: Colors.white) : const IconThemeData(color: Colors.black);

  // COMPONENT THEMES
  appBarTheme ??= const AppBarTheme();
  bannerTheme ??= const MaterialBannerThemeData();
  bottomAppBarTheme ??= const BottomAppBarTheme();
  bottomNavigationBarTheme ??= const BottomNavigationBarThemeData();
  bottomSheetTheme ??= const BottomSheetThemeData();
  buttonBarTheme ??= const ButtonBarThemeData();
  cardTheme ??= const CardTheme();
  chipTheme ??= const ChipThemeData();
  checkboxTheme ??= const CheckboxThemeData();
  dataTableTheme ??= const DataTableThemeData();
  dialogTheme ??= const DialogTheme();
  dividerTheme ??= const DividerThemeData();
  drawerTheme ??= const DrawerThemeData();
  elevatedButtonTheme ??= const ElevatedButtonThemeData();
  floatingActionButtonTheme ??= const FloatingActionButtonThemeData();
  listTileTheme ??= const ListTileThemeData();
  navigationBarTheme ??= const NavigationBarThemeData();
  navigationRailTheme ??= const NavigationRailThemeData();
  outlinedButtonTheme ??= const OutlinedButtonThemeData();
  popupMenuTheme ??= const PopupMenuThemeData();
  progressIndicatorTheme ??= const ProgressIndicatorThemeData();
  radioTheme ??= const RadioThemeData();
  sliderTheme ??= const SliderThemeData();
  snackBarTheme ??= const SnackBarThemeData();
  switchTheme ??= const SwitchThemeData();
  tabBarTheme ??= const TabBarTheme();
  textButtonTheme ??= const TextButtonThemeData();
  textSelectionTheme ??= const TextSelectionThemeData();
  timePickerTheme ??= const TimePickerThemeData();
  toggleButtonsTheme ??= const ToggleButtonsThemeData();
  tooltipTheme ??= const TooltipThemeData();
  expansionTileTheme ??= const ExpansionTileThemeData();

   // DEPRECATED (newest deprecations at the bottom)
  useTextSelectionTheme ??= true;
  textSelectionColor ??= isDark ? accentColor : primarySwatch[200]!;
  cursorColor = cursorColor ?? const Color.fromRGBO(66, 133, 244, 1.0);
  textSelectionHandleColor ??= isDark ? Colors.tealAccent[400]! : primarySwatch[300]!;
  accentTextTheme = defaultAccentTextTheme.merge(accentTextTheme);
  accentIconTheme ??= accentIsDark ? const IconThemeData(color: Colors.white) : const IconThemeData(color: Colors.black);
  buttonColor ??= isDark ? primarySwatch[600]! : Colors.grey[300]!;
  fixTextFieldOutlineLabel ??= true;
  primaryColorBrightness = estimatedPrimaryColorBrightness;

  return ThemeData.raw(
    // GENERAL CONFIGURATION
    applyElevationOverlayColor: applyElevationOverlayColor,
    cupertinoOverrideTheme: cupertinoOverrideTheme,
    extensions: _themeExtensionIterableToMap(extensions),
    inputDecorationTheme: inputDecorationTheme,
    materialTapTargetSize: materialTapTargetSize,
    pageTransitionsTheme: pageTransitionsTheme,
    platform: platform,
    scrollbarTheme: scrollbarTheme,
    splashFactory: splashFactory,
    visualDensity: visualDensity,
    useMaterial3: useMaterial3,
    // COLOR
    colorScheme: colorScheme,
    primaryColor: primaryColor,
    primaryColorLight: primaryColorLight,
    primaryColorDark: primaryColorDark,
    focusColor: focusColor,
    hoverColor: hoverColor,
    shadowColor: shadowColor,
    canvasColor: canvasColor,
    scaffoldBackgroundColor: scaffoldBackgroundColor,
    bottomAppBarColor: bottomAppBarColor,
    cardColor: cardColor,
    dividerColor: dividerColor,
    highlightColor: highlightColor,
    splashColor: splashColor,
    selectedRowColor: selectedRowColor,
    unselectedWidgetColor: unselectedWidgetColor,
    disabledColor: disabledColor,
    secondaryHeaderColor: secondaryHeaderColor,
    backgroundColor: backgroundColor,
    dialogBackgroundColor: dialogBackgroundColor,
    indicatorColor: indicatorColor,
    hintColor: hintColor,
    errorColor: errorColor,
    toggleableActiveColor: toggleableActiveColor,
    // TYPOGRAPHY & ICONOGRAPHY
    typography: typography,
    textTheme: textTheme,
    primaryTextTheme: primaryTextTheme,
    iconTheme: iconTheme,
    primaryIconTheme: primaryIconTheme,
    // COMPONENT THEMES
    appBarTheme: appBarTheme,
    bannerTheme: bannerTheme,
    bottomAppBarTheme: bottomAppBarTheme,
    bottomNavigationBarTheme: bottomNavigationBarTheme,
    bottomSheetTheme: bottomSheetTheme,
    buttonBarTheme: buttonBarTheme,
    buttonTheme: buttonTheme,
    cardTheme: cardTheme,
    checkboxTheme: checkboxTheme,
    chipTheme: chipTheme,
    dataTableTheme: dataTableTheme,
    dialogTheme: dialogTheme,
    dividerTheme: dividerTheme,
    drawerTheme: drawerTheme,
    elevatedButtonTheme: elevatedButtonTheme,
    floatingActionButtonTheme: floatingActionButtonTheme,
    listTileTheme: listTileTheme,
    navigationBarTheme: navigationBarTheme,
    navigationRailTheme: navigationRailTheme,
    outlinedButtonTheme: outlinedButtonTheme,
    popupMenuTheme: popupMenuTheme,
    progressIndicatorTheme: progressIndicatorTheme,
    radioTheme: radioTheme,
    sliderTheme: sliderTheme,
    snackBarTheme: snackBarTheme,
    switchTheme: switchTheme,
    tabBarTheme: tabBarTheme,
    textButtonTheme: textButtonTheme,
    textSelectionTheme: textSelectionTheme,
    timePickerTheme: timePickerTheme,
    toggleButtonsTheme: toggleButtonsTheme,
    tooltipTheme: tooltipTheme,
    expansionTileTheme: expansionTileTheme,
    // DEPRECATED (newest deprecations at the bottom)
    useTextSelectionTheme: useTextSelectionTheme,
    textSelectionColor: textSelectionColor,
    cursorColor: cursorColor,
    textSelectionHandleColor: textSelectionHandleColor,
    accentColor: accentColor,
    accentColorBrightness: accentColorBrightness,
    accentTextTheme: accentTextTheme,
    accentIconTheme: accentIconTheme,
    buttonColor: buttonColor,
    fixTextFieldOutlineLabel: fixTextFieldOutlineLabel,
    primaryColorBrightness: primaryColorBrightness,
    androidOverscrollIndicator: androidOverscrollIndicator,
  );
}