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:

{
  "accentColor": <Color>,
  "accentColorBrightness": <Brightness>,
  "accentIconTheme": <IconThemeData>,
  "accentTextTheme": <TextTheme>,
  "appBarTheme": <AppBarTheme>,
  "applyElevationOverlayColor": <bool>,
  "backgroundColor": <Color>,
  "bannerTheme": <MaterialBannerThemeData>,
  "bottomAppBarColor": <Color>,
  "bottomAppBarTheme": <BottomAppBarTheme>,
  "bottomNavigationBarTheme": <BottomNavigationBarThemeData>,
  "bottomSheetTheme": <BottomSheetThemeData>,
  "brightness": <Brightness>,
  "buttonBarTheme": <ButtonBarThemeData>,
  "buttonColor": <Color>,
  "buttonTheme": <ButtonThemeData>,
  "canvasColor": <Color>,
  "cardColor": <Color>,
  "cardTheme": <CardTheme>,
  "checkboxThemeData": <CheckboxThemeData>,
  "chipTheme": <ChipThemeData>,
  "colorScheme": <ColorScheme>,
  "cupertinoOverrideTheme": <CupertinoThemeData>,
  "cursorColor": <Color>,
  "dataTableTheme": <DataTableThemeData>,
  "dialogBackgroundColor": <Color>,
  "dialogTheme": <DialogTheme>,
  "disabledColor": <Color>,
  "dividerColor": <Color>,
  "dividerTheme": <DividerThemeData>,
  "elevatedButtonTheme": <ElevatedButtonThemeData>,
  "errorColor": <Color>,
  "fixTextFieldOutlineLabel": <bool>,
  "floatingActionButtonTheme": <FloatingActionButtonThemeData>,
  "focusColor": <Color>,
  "fontFamily": <String>,
  "highlightColor": <Color>,
  "hintColor": <Color>,
  "hoverColor": <Color>,
  "iconTheme": <IconThemeData>,
  "indicatorColor": <Color>,
  "inputDecorationTheme": <InputDecorationTheme>,
  "materialTapTargetSize": <MaterialTapTargetSize>,
  "navigationRailTheme": <NavigationRailThemeData>,
  "outlinedButtonTheme": <OutlinedButtonThemeData>,
  "pageTransitionsTheme": <PageTransitionsTheme>,
  "platform": <TargetPlatform>,
  "popupMenuTheme": <PopupMenuThemeData>,
  "primaryColor": <Color>,
  "primaryColorBrightness": <Brightness>,
  "primaryColorDark": <Color>,
  "primaryColorLight": <Color>,
  "primaryIconTheme": <IconThemeData>,
  "primarySwatch": <MaterialColor>,
  "primaryTextTheme": <TextTheme>,
  "radioTheme": <RadioThemeData>,
  "scaffoldBackgroundColor": <Color>,
  "scrollbarTheme": <ScrollbarThemeData>,
  "secondaryHeaderColor": <Color>,
  "selectedRowColor": <Color>,
  "shadowColor": <Color>,
  "sliderTheme": <SliderThemeData>,
  "snackBarTheme": <SnackBarThemeData>,
  "splashColor": <Color>,
  "splashFactory": <InteractiveInkFeatureFactory>,
  "switchTheme": <SwitchThemeData>,
  "tabBarTheme": <TabBarTheme>,
  "textButtonTheme": <TextButtonThemeData>,
  "textSelectionColor": <Color>,
  "textSelectionHandleColor": <Color>,
  "textSelectionTheme": <TextSelectionThemeData>,
  "textTheme": <TextTheme>,
  "timePickerTheme": <TimePickerThemeData>,
  "toggleButtonsTheme": <ToggleButtonsThemeData>,
  "toggleableActiveColor": <Color>,
  "tooltipTheme": <TooltipThemeData>,
  "typography": <Typography>,
  "unselectedWidgetColor": <Color>,
  "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(
      accentColor: decodeColor(
        value['accentColor'],
        validate: false,
      ),
      accentColorBrightness: decodeBrightness(
        value['accentColorBrightness'],
        validate: false,
      ),
      accentIconTheme: decodeIconThemeData(
        value['accentIconTheme'],
        validate: false,
      ),
      accentTextTheme: decodeTextTheme(
        value['accentTextTheme'],
        validate: false,
      ),
      appBarTheme: decodeAppBarTheme(
        value['appBarTheme'],
        validate: false,
      ),
      applyElevationOverlayColor: value['applyElevationOverlayColor'] == null
          ? null
          : JsonClass.parseBool(value['applyElevationOverlayColor']),
      backgroundColor: decodeColor(
        value['backgroundColor'],
        validate: false,
      ),
      bannerTheme: decodeMaterialBannerThemeData(
        value['bannerTheme'],
        validate: false,
      ),
      bottomAppBarColor: decodeColor(
        value['bottomAppBarColor'],
        validate: false,
      ),
      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,
      ),
      buttonColor: decodeColor(
        value['buttonColor'],
        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,
      ),
      cupertinoOverrideTheme: decodeCupertinoThemeData(
        value['cupertinoOverrideTheme'],
        validate: false,
      ),
      // @deprecated
      // cursorColor
      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,
      ),
      elevatedButtonTheme: decodeElevatedButtonThemeData(
        value['elevatedButtonTheme'],
        validate: false,
      ),
      errorColor: decodeColor(
        value['errorColor'],
        validate: false,
      ),
      fixTextFieldOutlineLabel: value['fixTextFieldOutlineLabel'] == null
          ? null
          : JsonClass.parseBool(value['fixTextFieldOutlineLabel']),
      floatingActionButtonTheme: decodeFloatingActionButtonThemeData(
        value['floatingActionButtonTheme'],
        validate: false,
      ),
      focusColor: decodeColor(
        value['focusColor'],
        validate: false,
      ),
      fontFamily: value['fontFamily'],
      highlightColor: decodeColor(
        value['highlightColor'],
        validate: false,
      ),
      hintColor: decodeColor(
        value['hintColor'],
        validate: false,
      ),
      hoverColor: decodeColor(
        value['hoverColor'],
        validate: false,
      ),
      iconTheme: decodeIconThemeData(
        value['iconTheme'],
        validate: false,
      ),
      indicatorColor: decodeColor(
        value['indicatorColor'],
        validate: false,
      ),
      inputDecorationTheme: decodeInputDecorationTheme(
        value['inputDecorationTheme'],
        validate: false,
      ),
      materialTapTargetSize: decodeMaterialTapTargetSize(
        value['materialTapTargetSize'],
        validate: false,
      ),
      navigationRailTheme: decodeNavigationRailThemeData(
        value['navigationRailTheme'],
        validate: false,
      ),
      outlinedButtonTheme: decodeOutlinedButtonThemeData(
        value['outlinedButtonTheme'],
        validate: false,
      ),
      pageTransitionsTheme: decodePageTransitionsTheme(
        value['pageTransitionsTheme'],
        validate: false,
      ),
      platform: decodeTargetPlatform(
        value['platform'],
        validate: false,
      ),
      popupMenuTheme: decodePopupMenuThemeData(
        value['popupMenuTheme'],
        validate: false,
      ),
      primaryColor: decodeColor(
        value['primaryColor'],
        validate: false,
      ),
      primaryColorBrightness: decodeBrightness(
        value['primaryColorBrightness'],
        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,
      ),
      radioTheme: decodeRadioThemeData(
        value['radioTheme'],
        validate: false,
      ),
      scaffoldBackgroundColor: decodeColor(
        value['scaffoldBackgroundColor'],
        validate: false,
      ),
      scrollbarTheme: decodeScrollbarThemeData(
        value['scrollbarTheme'],
        validate: false,
      ),
      secondaryHeaderColor: decodeColor(
        value['secondaryHeaderColor'],
        validate: false,
      ),
      selectedRowColor: decodeColor(
        value['selectedRowColor'],
        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,
      ),
      // @deprecated
      // textSelectionColor

      // @deprecated
      // textSelectionHandleColor
      textSelectionTheme: decodeTextSelectionThemeData(
        value['textSelectionTheme'],
        validate: false,
      ),
      textTheme: decodeTextTheme(
        value['textTheme'],
        validate: false,
      ),
      timePickerTheme: decodeTimePickerThemeData(
        value['timePickerThemeData'],
        validate: false,
      ),
      toggleButtonsTheme: decodeToggleButtonsThemeData(
        value['toggleButtonsTheme'],
        validate: false,
      ),
      toggleableActiveColor: decodeColor(
        value['toggleableActiveColor'],
        validate: false,
      ),
      tooltipTheme: decodeTooltipThemeData(
        value['tooltipTheme'],
        validate: false,
      ),
      typography: decodeTypography(
        value['typography'],
        validate: false,
      ),
      unselectedWidgetColor: decodeColor(
        value['unselectedWidgetColor'],
        validate: false,
      ),
      // @deprecated
      // useTextSelectionTheme
      visualDensity: decodeVisualDensity(
        value['visualDensity'],
        validate: false,
      ),
    );
  }

  return result;
}