decodeDatePickerThemeData static method
Decodes the given value
to an DatePickerThemeData. This expects the
given value
to be of the following structure:
{
"backgroundColor": "<Color>",
"cancelButtonStyle": "<ButtonStyle>",
"confirmButtonStyle": "<ButtonStyle>",
"dayBackgroundColor": "<WidgetStateProperty<Color>>",
"dayForegroundColor": "<WidgetStateProperty<Color>>",
"dayOverlayColor": "<WidgetStateProperty<Color>>",
"dayStyle": "<TextStyle>",
"dividerColor": "<Color>",
"elevation": "<double>",
"headerBackgroundColor": "<Color>",
"headerForegroundColor": "<Color>",
"headerHeadlineStyle": "<TextStyle>",
"headerHelpStyle": "<TextStyle>",
"inputDecorationTheme": "<InputDecorationTheme>",
"rangePickerBackgroundColor": "<Color>",
"rangePickerElevation": "<double>",
"rangePickerHeaderBackgroundColor": "<Color>",
"rangePickerHeaderForegroundColor": "<Color>",
"rangePickerHeaderHeadlineStyle": "<TextStyle>",
"rangePickerHeaderHelpStyle": "<TextStyle>",
"rangePickerShadowColor": "<Color>",
"rangePickerShape": "<ShapeBorder>",
"rangePickerSurfaceTintColor": "<Color>",
"rangeSelectionBackgroundColor": "<Color>",
"rangeSelectionOverlayColor": "<WidgetStateProperty<Color>>",
"shadowColor": "<Color>",
"shape": "<ShapeBorder>",
"surfaceTintColor": "<Color>",
"todayBackgroundColor": "<WidgetStateProperty<Color>>",
"todayBorder": "<ShapeBorder>",
"todayForegroundColor": "<WidgetStateProperty<Color>>",
"weekdayStyle": "<TextStyle>",
"yearBackgroundColor": "<WidgetStateProperty<Color>>",
"yearForegroundColor": "<WidgetStateProperty<Color>>",
"yearOverlayColor": "<WidgetStateProperty<Color>>",
"yearStyle": "<TextStyle>"
}
This will use the properties passed through JSON to create the WidgetStateProperty of each corresponding property by using the WidgetStateProperty.all function with the value passed in.
See also:
Implementation
static DatePickerThemeData? decodeDatePickerThemeData(
dynamic value, {
bool validate = true,
}) {
DatePickerThemeData? result;
if (value is DatePickerThemeData) {
result = value;
} else if (value != null) {
assert(SchemaValidator.validate(
schemaId: '$_baseSchemaUrl/date_picker_theme_data',
value: value,
validate: validate,
));
result = DatePickerThemeData(
backgroundColor: decodeColor(
value['backgroundColor'],
validate: false,
),
cancelButtonStyle: decodeButtonStyle(
value['cancelButtonStyle'],
validate: false,
),
confirmButtonStyle: decodeButtonStyle(
value['confirmButtonStyle'],
validate: false,
),
dayBackgroundColor: decodeWidgetStatePropertyColor(
value['dayBackgroundColor'],
validate: false,
),
dayForegroundColor: decodeWidgetStatePropertyColor(
value['dayForegroundColor'],
validate: false,
),
dayOverlayColor: decodeWidgetStatePropertyColor(
value['dayOverlayColor'],
validate: false,
),
dayStyle: decodeTextStyle(
value['dayStyle'],
validate: false,
),
dividerColor: decodeColor(
value['dividerColor'],
validate: false,
),
elevation: JsonClass.maybeParseDouble(value['elevation']),
headerBackgroundColor: decodeColor(
value['headerBackgroundColor'],
validate: false,
),
headerForegroundColor: decodeColor(
value['headerForegroundColor'],
validate: false,
),
headerHeadlineStyle: decodeTextStyle(
value['headerHeadlineStyle'],
validate: false,
),
headerHelpStyle: decodeTextStyle(
value['headerHelpStyle'],
validate: false,
),
inputDecorationTheme: decodeInputDecorationTheme(
value['inputDecorationTheme'],
validate: false,
),
rangePickerBackgroundColor: decodeColor(
value['rangePickerBackgroundColor'],
validate: false,
),
rangePickerElevation:
JsonClass.maybeParseDouble(value['rangePickerElevation']),
rangePickerHeaderBackgroundColor: decodeColor(
value['rangePickerHeaderBackgroundColor'],
validate: false,
),
rangePickerHeaderForegroundColor: decodeColor(
value['rangePickerHeaderForegroundColor'],
validate: false,
),
rangePickerHeaderHeadlineStyle: decodeTextStyle(
value['rangePickerHeaderHeadlineStyle'],
validate: false,
),
rangePickerHeaderHelpStyle: decodeTextStyle(
value['rangePickerHeaderHelpStyle'],
validate: false,
),
rangePickerShadowColor: decodeColor(
value['rangePickerShadowColor'],
validate: false,
),
rangePickerShape: decodeShapeBorder(
value['rangePickerShape'],
validate: false,
),
rangePickerSurfaceTintColor: decodeColor(
value['rangePickerSurfaceTintColor'],
validate: false,
),
rangeSelectionBackgroundColor: decodeColor(
value['rangeSelectionBackgroundColor'],
validate: false,
),
rangeSelectionOverlayColor: decodeWidgetStatePropertyColor(
value['rangeSelectionOverlayColor'],
validate: false,
),
shadowColor: decodeColor(
value['shadowColor'],
validate: false,
),
shape: decodeShapeBorder(
value['shape'],
validate: false,
),
surfaceTintColor: decodeColor(
value['surfaceTintColor'],
validate: false,
),
todayBackgroundColor: decodeWidgetStatePropertyColor(
value['todayBackgroundColor'],
validate: false,
),
todayBorder: decodeBorderSide(
value['todayBorder'],
validate: false,
),
todayForegroundColor: decodeWidgetStatePropertyColor(
value['todayForegroundColor'],
validate: false,
),
weekdayStyle: decodeTextStyle(
value['weekdayStyle'],
validate: false,
),
yearBackgroundColor: decodeWidgetStatePropertyColor(
value['yearBackgroundColor'],
validate: false,
),
yearForegroundColor: decodeWidgetStatePropertyColor(
value['yearForegroundColor'],
validate: false,
),
yearOverlayColor: decodeWidgetStatePropertyColor(
value['yearOverlayColor'],
validate: false,
),
yearStyle: decodeTextStyle(
value['yearStyle'],
validate: false,
),
);
}
return result;
}