decodeMouseCursor static method
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
noDrop
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 = WidgetStateMouseCursor.clickable;
break;
case 'textable':
result = WidgetStateMouseCursor.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',
'noDrop',
'none',
'precise',
'progress',
'resizeColumn',
'resizeDown',
'resizeDownLeft',
'resizeDownRight',
'resizeLeft',
'resizeLeftRight',
'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 'noDrop':
result = SystemMouseCursors.noDrop;
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 'resizeLeftRight':
result = SystemMouseCursors.resizeLeftRight;
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;
}