decodePopupMenuThemeData static method

PopupMenuThemeData? decodePopupMenuThemeData(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to a PopupMenuThemeData. This expects the given value to be of the following structure:

{
  "color": "<Color>",
  "elevation": "<double>",
  "enableFeedback": "<bool>",
  "iconColor": "<Color>",
  "iconSize": "<double>",
  "labelTextStyle": "<WidgetStateProperty<TextStyle>>",
  "mouseCursor": "<WidgetStateProperty<MouseCursor>>",
  "position": "<PopupMenuPosition>",
  "shadowColor": "<Color>",
  "shape": "<ShapeBorder>",
  "surfaceTintColor": "<Color>",
  "textStyle": "<TextStyle>"
}

See also:

Implementation

static PopupMenuThemeData? decodePopupMenuThemeData(
  dynamic value, {
  bool validate = true,
}) {
  PopupMenuThemeData? result;

  if (value is PopupMenuThemeData) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/popup_menu_theme_data',
      value: value,
      validate: validate,
    ));
    result = PopupMenuThemeData(
      color: decodeColor(
        value['color'],
        validate: false,
      ),
      elevation: JsonClass.maybeParseDouble(value['elevation']),
      enableFeedback: JsonClass.maybeParseBool(value['enableFeedback']),
      iconColor: decodeColor(
        value['iconColor'],
        validate: false,
      ),
      iconSize: JsonClass.maybeParseDouble(value['iconSize']),
      labelTextStyle: decodeWidgetStatePropertyTextStyle(
        value['labelTextStyle'],
        validate: false,
      ),
      mouseCursor: decodeWidgetStatePropertyMouseCursor(
        value['mouseCursor'],
        validate: false,
      ),
      position: decodePopupMenuPosition(
        value['position'],
        validate: false,
      ),
      shadowColor: decodeColor(
        value['shadowColor'],
        validate: false,
      ),
      shape: decodeShapeBorder(
        value['shape'],
        validate: false,
      ),
      surfaceTintColor: decodeColor(
        value['surfaceTintColor'],
        validate: false,
      ),
      textStyle: decodeTextStyle(
        value['textStyle'],
        validate: false,
      ),
    );
  }

  return result;
}