decodeThemeData static method

ThemeData? decodeThemeData(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to a ThemeData. This expects the value to have the following structure:

{
  "actionIconTheme": "<ActionIconTheme>",
  "appBarTheme": "<AppBarTheme>",
  "applyElevationOverlayColor": "<bool>",
  "badgeTheme": "<BadgeThemeData>",
  "bannerTheme": "<MaterialBannerThemeData>",
  "bottomAppBarTheme": "<BottomAppBarThemeScheme.id,
  "bottomNavigationBarTheme": "<BottomNavigationBarThemeData>",
  "bottomSheetTheme": "<BottomSheetThemeData>",
  "brightness": "<Brightness>",
  "buttonBarTheme": "<ButtonBarThemeData>",
  "buttonTheme": "<ButtonThemeData>",
  "canvasColor": "<Color>",
  "cardColor": "<Color>",
  "cardTheme": "<CardTheme>",
  "checkboxTheme": "<CheckboxThemeData>",
  "chipTheme": "<ChipThemeData>",
  "colorScheme": "<ColorScheme>",
  "colorSchemeSeed": "<Color>",
  "cupertinoOverrideTheme": "<CupertinoThemeData>",
  "datePickerTheme": "<DatePickerThemeData>",
  "dataTableTheme": "<DataTableThemeData>",
  "dialogBackgroundColor": "<Color>",
  "dialogTheme": "<DialogTheme>",
  "disabledColor": "<Color>",
  "dividerColor": "<Color>",
  "dividerTheme": "<DividerThemeData>",
  "drawerTheme": "<DrawerThemeData>",
  "dropdownMenuTheme": "<DropDownMenuThemeData>",
  "elevatedButtonTheme": "<ElevatedButtonThemeData>",
  "expansionTileTheme": "<ExpansionTileThemeData>",
  "filledButtonTheme": "<FilledButtonThemeDataScheme>"",
  "floatingActionButtonTheme": "<FloatingActionButtonThemeData>",
  "focusColor": "<Color>",
  "fontFamily": "<String>",
  "fontFamilyFallback": "<List<String>>",
  "highlightColor": "<Color>",
  "hintColor": "<Color>",
  "hoverColor": "<Color>",
  "iconButtonTheme": "<IconButtonThemeData>",
  "iconTheme": "<IconThemeData>",
  "indicatorColor": "<Color>",
  "inputDecorationTheme": "<InputDecorationTheme>",
  "listTileTheme": "<ListTileThemeData>",
  "materialTapTargetSize": "<MaterialTapTargetSize>",
  "menuBarTheme": "<MenuBarThemeData>",
  "menuButtonTheme": "<MenuButtonThemeData>",
  "menuTheme": "<MenuThemeData>",
  "navigationBarTheme": "<NavigationBarThemeData>",
  "navigationDrawerTheme": "<NavigationDrawerThemeData>",
  "navigationRailTheme": "<NavigationRailThemeData>",
  "outlinedButtonTheme": "<OutlinedButtonThemeData>",
  "package": "<String>",
  "pageTransitionsTheme": "<PageTransitionsTheme>",
  "platform": "<TargetPlatform>",
  "popupMenuTheme": "<PopupMenuThemeData>",
  "primaryColor": "<Color>",
  "primaryColorDark": "<Color>",
  "primaryColorLight": "<Color>",
  "primaryIconTheme": "<IconThemeData>",
  "primarySwatch": "<MaterialColor>",
  "primaryTextTheme": "<TextTheme>",
  "progressIndicatorTheme": "<ProgressIndicatorThemeData>",
  "radioTheme": "<RadioThemeData>",
  "scaffoldBackgroundColor": "<Color>",
  "scrollbarTheme": "<ScrollbarThemeData>",
  "searchBarTheme": "<SearchBarThemeData>",
  "searchViewTheme": "<SearchViewThemeData>",
  "secondaryHeaderColor": "<Color>",
  "segmentedButtonTheme": "<SegmentedButtonThemeData>",
  "shadowColor": "<Color>",
  "sliderTheme": "<SliderThemeData>",
  "snackBarTheme": "<SnackBarThemeData>",
  "splashColor": "<Color>",
  "splashFactory": "<InteractiveInkFeatureFactory>",
  "switchTheme": "<SwitchThemeData>",
  "tabBarTheme": "<TabBarTheme>",
  "textButtonTheme": "<TextButtonThemeData>",
  "textSelectionTheme": "<TextSelectionThemeData>",
  "textTheme": "<TextTheme>",
  "timePickerTheme": "<TimePickerThemeData>",
  "toggleButtonsTheme": "<ToggleButtonsThemeData>",
  "tooltipTheme": "<TooltipThemeData>",
  "typography": "<Typography>",
  "unselectedWidgetColor": "<Color>",
  "useMaterial3": "<bool>",
  "visualDensity": "<VisualDensity>"
}

See also:

Implementation

static ThemeData? decodeThemeData(
  dynamic value, {
  bool validate = true,
}) {
  ThemeData? result;

  if (value is ThemeData) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/theme_data',
      value: value,
      validate: validate,
    ));
    result = ThemeData(
      // adaptations: @unencodable,
      actionIconTheme: decodeActionIconThemeData(
        value['actionIconThemeData'],
        validate: false,
      ),
      appBarTheme: decodeAppBarTheme(
        value['appBarTheme'],
        validate: false,
      ),
      applyElevationOverlayColor: JsonClass.maybeParseBool(
        value['applyElevationOverlayColor'],
      ),
      badgeTheme: decodeBadgeThemeData(
        value['badgeTheme'],
        validate: false,
      ),
      bannerTheme: decodeMaterialBannerThemeData(
        value['bannerTheme'],
        validate: false,
      ),
      // bottomAppBarColor: @deprecated,
      bottomAppBarTheme: decodeBottomAppBarTheme(
        value['bottomAppBarTheme'],
        validate: false,
      ),
      bottomNavigationBarTheme: decodeBottomNavigationBarThemeData(
        value['bottomNavigationBarTheme'],
        validate: false,
      ),
      bottomSheetTheme: decodeBottomSheetThemeData(
        value['bottomSheetTheme'],
        validate: false,
      ),
      brightness: decodeBrightness(
        value['brightness'],
        validate: false,
      ),
      buttonBarTheme: decodeButtonBarThemeData(
        value['buttonBarTheme'],
        validate: false,
      ),
      buttonTheme: decodeButtonThemeData(
        value['buttonTheme'],
        validate: false,
      ),
      canvasColor: decodeColor(
        value['canvasColor'],
        validate: false,
      ),
      cardColor: decodeColor(
        value['cardColor'],
        validate: false,
      ),
      cardTheme: decodeCardTheme(
        value['cardTheme'],
        validate: false,
      ),
      checkboxTheme: decodeCheckboxThemeData(
        value['checkboxTheme'],
        validate: false,
      ),
      chipTheme: decodeChipThemeData(
        value['chipTheme'],
        validate: false,
      ),
      colorScheme: decodeColorScheme(
        value['colorScheme'],
        validate: false,
      ),
      colorSchemeSeed: decodeColor(
        value['colorSchemeSeed'],
        validate: false,
      ),
      cupertinoOverrideTheme: decodeCupertinoThemeData(
        value['cupertinoOverrideTheme'],
        validate: false,
      ),
      datePickerTheme: decodeDatePickerThemeData(
        value['datePickerThemeData'],
        validate: false,
      ),
      dataTableTheme: decodeDataTableThemeData(
        value['dataTableTheme'],
        validate: false,
      ),
      dialogBackgroundColor: decodeColor(
        value['dialogBackgroundColor'],
        validate: false,
      ),
      dialogTheme: decodeDialogTheme(
        value['dialogTheme'],
        validate: false,
      ),
      disabledColor: decodeColor(
        value['disabledColor'],
        validate: false,
      ),
      dividerColor: decodeColor(
        value['dividerColor'],
        validate: false,
      ),
      dividerTheme: decodeDividerThemeData(
        value['dividerTheme'],
        validate: false,
      ),
      drawerTheme: decodeDrawerThemeData(
        value['drawerTheme'],
        validate: false,
      ),
      dropdownMenuTheme: decodeDropdownMenuThemeData(
        value['dropdownMenuTheme'],
        validate: false,
      ),
      elevatedButtonTheme: decodeElevatedButtonThemeData(
        value['elevatedButtonTheme'],
        validate: false,
      ),
      expansionTileTheme: decodeExpansionTileThemeData(
        value['expansionTileTheme'],
        validate: false,
      ),
      // extensions: @unencodable,
      filledButtonTheme: decodeFilledButtonThemeData(
        value['filledButtonTheme'],
        validate: false,
      ),
      floatingActionButtonTheme: decodeFloatingActionButtonThemeData(
        value['floatingActionButtonTheme'],
        validate: false,
      ),
      focusColor: decodeColor(
        value['focusColor'],
        validate: false,
      ),
      fontFamily: value['fontFamily'],
      fontFamilyFallback: value['fontFamilyFallback'] == null
          ? null
          : List<String>.from(
              value['fontFamilyFallback'],
            ),
      highlightColor: decodeColor(
        value['highlightColor'],
        validate: false,
      ),
      hintColor: decodeColor(
        value['hintColor'],
        validate: false,
      ),
      hoverColor: decodeColor(
        value['hoverColor'],
        validate: false,
      ),
      iconButtonTheme: decodeIconButtonThemeData(
        value['iconButtonTheme'],
        validate: false,
      ),
      iconTheme: decodeIconThemeData(
        value['iconTheme'],
        validate: false,
      ),
      indicatorColor: decodeColor(
        value['indicatorColor'],
        validate: false,
      ),
      inputDecorationTheme: decodeInputDecorationTheme(
        value['inputDecorationTheme'],
        validate: false,
      ),
      listTileTheme: decodeListTileThemeData(
        value['listTileTheme'],
        validate: false,
      ),
      materialTapTargetSize: decodeMaterialTapTargetSize(
        value['materialTapTargetSize'],
        validate: false,
      ),
      menuBarTheme: decodeMenuBarThemeData(
        value['menuBarTheme'],
        validate: false,
      ),
      menuButtonTheme: decodeMenuButtonThemeData(
        value['menuButtonTheme'],
        validate: false,
      ),
      menuTheme: decodeMenuThemeData(
        value['menuTheme'],
        validate: false,
      ),
      navigationBarTheme: decodeNavigationBarThemeData(
        value['navigationBarTheme'],
        validate: false,
      ),
      navigationDrawerTheme: decodeNavigationDrawerThemeData(
        value['navigationDrawerTheme'],
        validate: false,
      ),
      navigationRailTheme: decodeNavigationRailThemeData(
        value['navigationRailTheme'],
        validate: false,
      ),
      outlinedButtonTheme: decodeOutlinedButtonThemeData(
        value['outlinedButtonTheme'],
        validate: false,
      ),
      pageTransitionsTheme: decodePageTransitionsTheme(
        value['pageTransitionsTheme'],
        validate: false,
      ),
      package: value['package'],
      platform: decodeTargetPlatform(
        value['platform'],
        validate: false,
      ),
      popupMenuTheme: decodePopupMenuThemeData(
        value['popupMenuTheme'],
        validate: false,
      ),
      primaryColor: decodeColor(
        value['primaryColor'],
        validate: false,
      ),
      primaryColorDark: decodeColor(
        value['primaryColorDark'],
        validate: false,
      ),
      primaryColorLight: decodeColor(
        value['primaryColorLight'],
        validate: false,
      ),
      primaryIconTheme: decodeIconThemeData(
        value['primaryIconTheme'],
        validate: false,
      ),
      primarySwatch: decodeMaterialColor(
        value['primarySwatch'],
        validate: false,
      ),
      primaryTextTheme: decodeTextTheme(
        value['primaryTextTheme'],
        validate: false,
      ),
      progressIndicatorTheme: decodeProgressIndicatorThemeData(
        value['progressIndicatorTheme'],
        validate: false,
      ),
      radioTheme: decodeRadioThemeData(
        value['radioTheme'],
        validate: false,
      ),
      scaffoldBackgroundColor: decodeColor(
        value['scaffoldBackgroundColor'],
        validate: false,
      ),
      scrollbarTheme: decodeScrollbarThemeData(
        value['scrollbarTheme'],
        validate: false,
      ),
      searchBarTheme: decodeSearchBarThemeData(
        value['searchBarTheme'],
        validate: false,
      ),
      searchViewTheme: decodeSearchViewThemeData(
        value['searchViewTheme'],
        validate: false,
      ),
      secondaryHeaderColor: decodeColor(
        value['secondaryHeaderColor'],
        validate: false,
      ),
      segmentedButtonTheme: decodeSegmentedButtonThemeData(
        value['segmentedButtonTheme'],
        validate: false,
      ),
      shadowColor: decodeColor(
        value['shadowColor'],
        validate: false,
      ),
      sliderTheme: decodeSliderThemeData(
        value['sliderTheme'],
        validate: false,
      ),
      snackBarTheme: decodeSnackBarThemeData(
        value['snackBarTheme'],
        validate: false,
      ),
      splashColor: decodeColor(
        value['splashColor'],
        validate: false,
      ),
      splashFactory: decodeInteractiveInkFeatureFactory(
        value['splashFactory'],
        validate: false,
      ),
      switchTheme: decodeSwitchThemeData(
        value['switchTheme'],
        validate: false,
      ),
      tabBarTheme: decodeTabBarTheme(
        value['tabBarTheme'],
        validate: false,
      ),
      textButtonTheme: decodeTextButtonThemeData(
        value['textButtonTheme'],
        validate: false,
      ),
      textSelectionTheme: decodeTextSelectionThemeData(
        value['textSelectionTheme'],
        validate: false,
      ),
      textTheme: decodeTextTheme(
        value['textTheme'],
        validate: false,
      ),
      timePickerTheme: decodeTimePickerThemeData(
        value['timePickerTheme'],
        validate: false,
      ),
      toggleButtonsTheme: decodeToggleButtonsThemeData(
        value['toggleButtonsTheme'],
        validate: false,
      ),
      // toggleableActiveColor: @deprecated,
      tooltipTheme: decodeTooltipThemeData(
        value['tooltipTheme'],
        validate: false,
      ),
      typography: decodeTypography(
        value['typography'],
        validate: false,
      ),
      unselectedWidgetColor: decodeColor(
        value['unselectedWidgetColor'],
        validate: false,
      ),
      useMaterial3: JsonClass.maybeParseBool(value['useMaterial3']),
      visualDensity: decodeVisualDensity(
        value['visualDensity'],
        validate: false,
      ),
    );
  }

  return result;
}