decodeMouseCursor static method

MouseCursor? decodeMouseCursor(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to a MouseCursor. There must be a "type" attribute that is one of:

  • defer
  • material
  • system
  • uncontrolled

When the type is material, this expects a cursor that is one of:

  • clickable
  • textable

When the type is system, this expects a cursor that is one of:

  • alias
  • allScroll
  • basic
  • cell
  • click
  • contextMenu
  • copy
  • disappearing
  • forbidden
  • grab
  • grabbing
  • help
  • move
  • none
  • precise
  • progress
  • resizeColumn
  • resizeDown
  • resizeDownLeft
  • resizeDownRight
  • resizeLeft
  • resizeRight
  • resizeRow
  • resizeUp
  • resizeUpDown
  • resizeUpLeft
  • resizeUpLeftDownRight
  • resizeUpRight
  • resizeUpRightDownLeft
  • text
  • verticalText
  • wait
  • zoomIn
  • zoomOut

Implementation

static MouseCursor? decodeMouseCursor(
  dynamic value, {
  bool validate = true,
}) {
  MouseCursor? result;
  if (value is MouseCursor) {
    result = value;
  } else {
    assert(value == null || value['type'] is String);
    _checkSupported(
      'MouseCursor.type',
      [
        'defer',
        'material',
        'system',
        'uncontrolled',
      ],
      value == null ? null : value['type'],
    );

    if (value != null) {
      assert(SchemaValidator.validate(
        schemaId: '$_baseSchemaUrl/mouse_cursor',
        value: value,
        validate: validate,
      ));
      switch (value['type']) {
        case 'defer':
          result = MouseCursor.defer;
          break;
        case 'material':
          assert(value['cursor'] is String);
          _checkSupported(
            'MouseCursor.cursor',
            [
              'clickable',
              'textable',
            ],
            value['cursor'],
          );
          switch (value['cursor']) {
            case 'clickable':
              result = MaterialStateMouseCursor.clickable;
              break;

            case 'textable':
              result = MaterialStateMouseCursor.textable;
              break;
          }
          break;
        case 'system':
          assert(value['cursor'] is String);
          _checkSupported(
            'MouseCursor.cursor',
            [
              'alias',
              'allScroll',
              'basic',
              'cell',
              'click',
              'contextMenu',
              'copy',
              'disappearing',
              'forbidden',
              'grab',
              'grabbing',
              'help',
              'move',
              'none',
              'precise',
              'progress',
              'resizeColumn',
              'resizeDown',
              'resizeDownLeft',
              'resizeDownRight',
              'resizeLeft',
              'resizeRight',
              'resizeRow',
              'resizeUp',
              'resizeUpDown',
              'resizeUpLeft',
              'resizeUpLeftDownRight',
              'resizeUpRight',
              'resizeUpRightDownLeft',
              'text',
              'verticalText',
              'wait',
              'zoomIn',
              'zoomOut',
            ],
            value['cursor'],
          );

          switch (value['cursor']) {
            case 'alias':
              result = SystemMouseCursors.alias;
              break;

            case 'allScroll':
              result = SystemMouseCursors.allScroll;
              break;

            case 'basic':
              result = SystemMouseCursors.basic;
              break;

            case 'cell':
              result = SystemMouseCursors.cell;
              break;

            case 'click':
              result = SystemMouseCursors.click;
              break;

            case 'contextMenu':
              result = SystemMouseCursors.contextMenu;
              break;

            case 'copy':
              result = SystemMouseCursors.copy;
              break;

            case 'disappearing':
              result = SystemMouseCursors.disappearing;
              break;

            case 'forbidden':
              result = SystemMouseCursors.forbidden;
              break;

            case 'grab':
              result = SystemMouseCursors.grab;
              break;

            case 'grabbing':
              result = SystemMouseCursors.grabbing;
              break;

            case 'help':
              result = SystemMouseCursors.help;
              break;

            case 'move':
              result = SystemMouseCursors.move;
              break;

            case 'none':
              result = SystemMouseCursors.none;
              break;

            case 'precise':
              result = SystemMouseCursors.precise;
              break;

            case 'progress':
              result = SystemMouseCursors.progress;
              break;

            case 'resizeColumn':
              result = SystemMouseCursors.resizeColumn;
              break;

            case 'resizeDown':
              result = SystemMouseCursors.resizeDown;
              break;

            case 'resizeDownLeft':
              result = SystemMouseCursors.resizeDownLeft;
              break;

            case 'resizeDownRight':
              result = SystemMouseCursors.resizeDownRight;
              break;

            case 'resizeLeft':
              result = SystemMouseCursors.resizeLeft;
              break;

            case 'resizeRight':
              result = SystemMouseCursors.resizeRight;
              break;

            case 'resizeRow':
              result = SystemMouseCursors.resizeRow;
              break;

            case 'resizeUp':
              result = SystemMouseCursors.resizeUp;
              break;

            case 'resizeUpDown':
              result = SystemMouseCursors.resizeUpDown;
              break;

            case 'resizeUpLeft':
              result = SystemMouseCursors.resizeUpLeft;
              break;

            case 'resizeUpLeftDownRight':
              result = SystemMouseCursors.resizeUpLeftDownRight;
              break;

            case 'resizeUpRight':
              result = SystemMouseCursors.resizeUpRight;
              break;

            case 'resizeUpRightDownLeft':
              result = SystemMouseCursors.resizeUpRightDownLeft;
              break;

            case 'text':
              result = SystemMouseCursors.text;
              break;

            case 'verticalText':
              result = SystemMouseCursors.verticalText;
              break;

            case 'wait':
              result = SystemMouseCursors.wait;
              break;

            case 'zoomIn':
              result = SystemMouseCursors.zoomIn;
              break;

            case 'zoomOut':
              result = SystemMouseCursors.zoomOut;
              break;
          }
          break;
        case 'uncontrolled':
          result = MouseCursor.uncontrolled;
          break;
      }
    }
  }
  return result;
}