- override
Called when the object implementing this interface receives a
SemanticsAction. For example, if the user of an accessibility tool
instructs their device that they wish to tap a button, the RenderObject
behind that button would have its performAction method called with the
SemanticsAction.tap action.
Source
@override
void performAction(SemanticsAction action) {
switch (action) {
case SemanticsAction.tap:
if (onTap != null)
onTap();
break;
case SemanticsAction.longPress:
if (onLongPress != null)
onLongPress();
break;
case SemanticsAction.scrollLeft:
if (onHorizontalDragUpdate != null) {
final double primaryDelta = size.width * -scrollFactor;
onHorizontalDragUpdate(new DragUpdateDetails(
delta: new Offset(primaryDelta, 0.0), primaryDelta: primaryDelta
));
}
break;
case SemanticsAction.scrollRight:
if (onHorizontalDragUpdate != null) {
final double primaryDelta = size.width * scrollFactor;
onHorizontalDragUpdate(new DragUpdateDetails(
delta: new Offset(primaryDelta, 0.0), primaryDelta: primaryDelta
));
}
break;
case SemanticsAction.scrollUp:
if (onVerticalDragUpdate != null) {
final double primaryDelta = size.height * -scrollFactor;
onVerticalDragUpdate(new DragUpdateDetails(
delta: new Offset(0.0, primaryDelta), primaryDelta: primaryDelta
));
}
break;
case SemanticsAction.scrollDown:
if (onVerticalDragUpdate != null) {
final double primaryDelta = size.height * scrollFactor;
onVerticalDragUpdate(new DragUpdateDetails(
delta: new Offset(0.0, primaryDelta), primaryDelta: primaryDelta
));
}
break;
case SemanticsAction.increase:
case SemanticsAction.decrease:
assert(false);
break;
}
}