decodeWidgetStatePropertyIcon static method

WidgetStateProperty<Icon?>? decodeWidgetStatePropertyIcon(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes a value into a Icon based WidgetStateProperty. This accepts a Icon or a String which will be resolved for all states.

Alternatively, if the value is a Map then this expects the following format:

{
  "disabled": "<Icon>",
  "dragged": "<Icon>",
  "empty": "<Icon>",
  "error": "<Icon>",
  "focused": "<Icon>",
  "hovered": "<Icon>",
  "pressed": "<Icon>",
  "scrolledUnder": "<Icon>",
  "selected": "<Icon>"
}

See also:

Implementation

static WidgetStateProperty<Icon?>? decodeWidgetStatePropertyIcon(
  dynamic value, {
  bool validate = true,
}) {
  WidgetStateProperty<Icon?>? result;

  if (value is WidgetStateProperty<Icon?>) {
    result = value;
  } else if (value != null) {
    if (value is Icon) {
      result = WidgetStateProperty.all<Icon?>(value);
    } else if (value is IconData) {
      result = WidgetStateProperty.all<Icon?>(Icon(value));
    } else if (value is Map) {
      assert(SchemaValidator.validate(
        schemaId: '$_baseSchemaUrl/widget_state_property_icon',
        value: value,
        validate: validate,
      ));

      result = MapWidgetStateProperty.resolveWith((states) {
        Icon? result;
        if (states.contains(WidgetState.disabled)) {
          result = decodeIcon(
            value['disabled'],
            validate: false,
          );
        } else if (states.contains(WidgetState.dragged)) {
          result = decodeIcon(
            value['dragged'],
            validate: false,
          );
        } else if (states.contains(WidgetState.error)) {
          result = decodeIcon(
            value['error'],
            validate: false,
          );
        } else if (states.contains(WidgetState.focused)) {
          result = decodeIcon(
            value['focused'],
            validate: false,
          );
        } else if (states.contains(WidgetState.pressed)) {
          result = decodeIcon(
            value['pressed'],
            validate: false,
          );
        } else if (states.contains(WidgetState.hovered)) {
          result = decodeIcon(
            value['hovered'],
            validate: false,
          );
        } else if (states.contains(WidgetState.scrolledUnder)) {
          result = decodeIcon(
            value['scrolledUnder'],
            validate: false,
          );
        } else if (states.contains(WidgetState.selected)) {
          result = decodeIcon(
            value['selected'],
            validate: false,
          );
        } else {
          result = decodeIcon(
            value['empty'],
            validate: false,
          );
        }

        return result;
      });
    } else {
      result = WidgetStateProperty.all<Icon?>(value);
    }
  }
  return result;
}