decodeDatePickerThemeData static method

DatePickerThemeData? decodeDatePickerThemeData(
  1. dynamic value, {
  2. bool validate = true,
})

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;
}