1. override
void performAction(SemanticsAction action)

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;
  }
}