decodeWidgetStatePropertyMouseCursor static method

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

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

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

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

See also:

Implementation

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

  if (value is WidgetStateProperty<MouseCursor?>) {
    result = value;
  } else if (value != null) {
    if (value is MouseCursor) {
      result = WidgetStateProperty.all<MouseCursor?>(value);
    } else if (value is String) {
      result = WidgetStateProperty.all<MouseCursor?>(decodeMouseCursor(
        value,
        validate: false,
      ));
    } else if (value is Map) {
      final testValues = [
        'disabled',
        'dragged',
        'empty',
        'error',
        'focused',
        'hovered',
        'pressed',
        'scrolledUnder',
        'selected',
      ];

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

      if (isMsp != true) {
        result = WidgetStateProperty.all<MouseCursor?>(
          decodeMouseCursor(
            value,
            validate: false,
          ),
        );
      } else {
        assert(SchemaValidator.validate(
          schemaId: '$_baseSchemaUrl/widget_state_property_mouse_cursor',
          value: value,
          validate: validate,
        ));

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

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