decodeMaterialStatePropertyEdgeInsetsGeometry static method

MaterialStateProperty<EdgeInsetsGeometry?>? decodeMaterialStatePropertyEdgeInsetsGeometry(
  1. dynamic value, {
  2. bool validate = true,
})

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

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

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

See also:

Implementation

static MaterialStateProperty<EdgeInsetsGeometry?>?
    decodeMaterialStatePropertyEdgeInsetsGeometry(
  dynamic value, {
  bool validate = true,
}) {
  MaterialStateProperty<EdgeInsetsGeometry?>? result;

  if (value is MaterialStateProperty<EdgeInsetsGeometry?>) {
    result = value;
  } else if (value != null) {
    if (value is EdgeInsetsGeometry) {
      result = MaterialStateProperty.all(value);
    } else if (value is String) {
      result = MaterialStateProperty.all(decodeEdgeInsetsGeometry(value));
    } else if (value is Map) {
      var testValues = [
        'disabled',
        'dragged',
        'empty',
        'error',
        'focused',
        'hovered',
        'pressed',
        'selected',
      ];

      var isMsp = false;
      for (var key in value.keys) {
        if (testValues.contains(key)) {
          isMsp = true;
          break;
        }
      }

      if (isMsp != true) {
        result = MaterialStateProperty.all(decodeEdgeInsetsGeometry(value));
      } else {
        assert(SchemaValidator.validate(
          schemaId:
              '$_baseSchemaUrl/material_state_property_edge_insets_geometry',
          value: value,
          validate: validate,
        ));

        result = MaterialStateProperty.resolveWith((states) {
          EdgeInsetsGeometry? result;
          if (states.contains(MaterialState.disabled)) {
            result = decodeEdgeInsetsGeometry(value['disabled']);
          } else if (states.contains(MaterialState.dragged)) {
            result = decodeEdgeInsetsGeometry(value['dragged']);
          } else if (states.contains(MaterialState.error)) {
            result = decodeEdgeInsetsGeometry(value['error']);
          } else if (states.contains(MaterialState.focused)) {
            result = decodeEdgeInsetsGeometry(value['focused']);
          } else if (states.contains(MaterialState.hovered)) {
            result = decodeEdgeInsetsGeometry(value['hovered']);
          } else if (states.contains(MaterialState.pressed)) {
            result = decodeEdgeInsetsGeometry(value['pressed']);
          } else if (states.contains(MaterialState.selected)) {
            result = decodeEdgeInsetsGeometry(value['selected']);
          } else {
            result = decodeEdgeInsetsGeometry(value['empty']);
          }

          return result;
        });
      }
    } else {
      result = MaterialStateProperty.all(value);
    }
  }
  return result;
}