decodeThemeData static method
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:
decodeActionIconTheme
- decodeAppBarTheme
- decodeBadgeThemeData
- decodeBottomAppBarTheme
- decodeBottomNavigationBarThemeData
- decodeBottomSheetThemeData
- decodeBrightness
- decodeButtonBarThemeData
- decodeButtonThemeData
- decodeCardTheme
- decodeCheckboxThemeData
- decodeChipThemeData
- decodeColor
- decodeColorScheme
- decodeDatePickerThemeData
- decodeDataTableThemeData
- decodeDialogTheme
- decodeDividerThemeData
- decodeDrawerThemeData
- decodeElevatedButtonThemeData
- decodeExpansionTileThemeData
- decodeFilledButtonThemeData
- decodeFloatingActionButtonThemeData
- decodeIconButtonThemeData
- decodeIconThemeData
- decodeInputDecorationTheme
- decodeInteractiveInkFeatureFactory
- decodeListTileThemeData
- decodeMaterialBannerThemeData
- decodeMaterialTapTargetSize
- decodeMenuBarThemeData
- decodeMenuButtonThemeData
- decodeMenuThemeData
- decodeNavigationBarThemeData
- decodeNavigationDrawerThemeData
- decodeNavigationRailThemeData
- decodeOutlinedButtonThemeData
- decodePageTransitionsTheme
- decodePopupMenuThemeData
- decodeProgressIndicatorThemeData
- decodeRadioThemeData
- decodeScrollbarThemeData
- decodeSearchBarThemeData
- decodeSearchViewThemeData
- decodeSegmentedButtonThemeData
- 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(
// 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;
}