decodeThemeData static method
Decodes the given value
to a ThemeData. This expects the value
to
have the following structure:
{
"androidOverscrollIndicator": <AndroidOverscrollIndicator>,
"appBarTheme": <AppBarTheme>,
"applyElevationOverlayColor": <bool>,
"backgroundColor": <Color>,
"bannerTheme": <MaterialBannerThemeData>,
"bottomAppBarColor": <Color>,
"bottomAppBarTheme": <BottomAppBarTheme>,
"bottomNavigationBarTheme": <BottomNavigationBarThemeData>,
"bottomSheetTheme": <BottomSheetThemeData>,
"brightness": <Brightness>,
"buttonBarTheme": <ButtonBarThemeData>,
"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>,
"drawerTheme": <DrawerThemeData>,
"elevatedButtonTheme": <ElevatedButtonThemeData>,
"errorColor": <Color>,
"floatingActionButtonTheme": <FloatingActionButtonThemeData>,
"focusColor": <Color>,
"fontFamily": <String>,
"highlightColor": <Color>,
"hintColor": <Color>,
"hoverColor": <Color>,
"iconTheme": <IconThemeData>,
"indicatorColor": <Color>,
"inputDecorationTheme": <InputDecorationTheme>,
"listTileTheme": <ListTileThemeData>,
"materialTapTargetSize": <MaterialTapTargetSize>,
"navigationBarTheme": <NavigationBarThemeData>,
"navigationRailTheme": <NavigationRailThemeData>,
"outlinedButtonTheme": <OutlinedButtonThemeData>,
"pageTransitionsTheme": <PageTransitionsTheme>,
"platform": <TargetPlatform>,
"popupMenuTheme": <PopupMenuThemeData>,
"primaryColor": <Color>,
"primaryColorDark": <Color>,
"primaryColorLight": <Color>,
"primaryIconTheme": <IconThemeData>,
"primarySwatch": <MaterialColor>,
"primaryTextTheme": <TextTheme>,
"progressIndicatorTheme": <ProgressIndicatorTheme>,
"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>,
"useMaterial3": <bool>,
"visualDensity": <VisualDensity>
}
See also:
- decodeAndroidOverscrollIndicator
- decodeAppBarTheme
- decodeBottomAppBarTheme
- decodeBottomNavigationBarThemeData
- decodeBottomSheetThemeData
- decodeBrightness
- decodeButtonBarThemeData
- decodeButtonThemeData
- decodeCardTheme
- decodeCheckboxThemeData
- decodeChipThemeData
- decodeColor
- decodeColorScheme
- decodeDataTableThemeData
- decodeDialogTheme
- decodeDividerThemeData
- decodeDrawerThemeData
- decodeElevatedButtonThemeData
- decodeFloatingActionButtonThemeData
- decodeIconThemeData
- decodeInputDecorationTheme
- decodeInteractiveInkFeatureFactory
- decodeListTileThemeData
- decodeMaterialBannerThemeData
- decodeMaterialTapTargetSize
- decodeNavigationBarThemeData
- decodeNavigationRailThemeData
- decodeOutlinedButtonThemeData
- decodePageTransitionsTheme
- decodePopupMenuThemeData
- decodeProgressIndicatorThemeData
- decodeRadioThemeData
- decodeScrollbarThemeData
- decodeSliderThemeData
- decodeSnackBarThemeData
- decodeSwitchThemeData
- decodeTabBarTheme
- decodeTargetPlatform
- decodeTextButtonThemeData
- decodeTextSelectionThemeData
- decodeTimePickerThemeData
- decodeTextStyle
- decodeToggleButtonsThemeData
- decodeTypography
- decodeVisualDensity
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(
// @deprecated
// accentColor: null,
// @deprecated
// accentColorBrightness: null,
// @deprecated
// accentIconTheme: null,
// @deprecated
// accentTextTheme: null,
androidOverscrollIndicator: decodeAndroidOverscrollIndicator(
value['androidOverscrollIndicator'],
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,
),
// @deprecated
// buttonColor: null,
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: null,
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,
),
elevatedButtonTheme: decodeElevatedButtonThemeData(
value['elevatedButtonTheme'],
validate: false,
),
errorColor: decodeColor(
value['errorColor'],
validate: false,
),
floatingActionButtonTheme: decodeFloatingActionButtonThemeData(
value['floatingActionButtonTheme'],
validate: false,
),
// @deprecated
// fixTextFieldOutlineLabel: null,
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,
),
listTileTheme: decodeListTileThemeData(
value['listTileTheme'],
validate: false,
),
materialTapTargetSize: decodeMaterialTapTargetSize(
value['materialTapTargetSize'],
validate: false,
),
navigationBarTheme: decodeNavigationBarThemeData(
value['navigationBarTheme'],
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,
),
// @deprecated
// primaryColorBrightness: null,
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,
),
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: null,
// @deprecated
// textSelectionHandleColor: null,
textSelectionTheme: decodeTextSelectionThemeData(
value['textSelectionTheme'],
validate: false,
),
textTheme: decodeTextTheme(
value['textTheme'],
validate: false,
),
timePickerTheme: decodeTimePickerThemeData(
value['timePickerTheme'] ??
/* This was the original, incorrect, value; kept for backwards compatibility */
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,
),
useMaterial3: value['useMaterial3'] == null
? null
: JsonClass.parseBool(
value['useMaterial3'],
),
// @deprecated
// useTextSelectionTheme: null,
visualDensity: decodeVisualDensity(
value['visualDensity'],
validate: false,
),
);
}
return result;
}