pointerEvent method

  1. @override
void pointerEvent(
  1. PointerEvent event,
  2. HitTestEntry<HitTestTarget> entry
)
override

Handle a pointer event.

Implementation

@override
pointerEvent(PointerEvent event, HitTestEntry<HitTestTarget> entry) {
  if (!active) return;

  final stateMachine = this.stateMachine;
  final position = localToArtboard(
    position: event.localPosition,
    artboardBounds: artboard.bounds,
    fit: fit,
    alignment: alignment,
    size: lastSize,
    scaleFactor: layoutScaleFactor,
  );
  final HitResult hitResult;
  if (event is PointerDownEvent) {
    hitResult = stateMachine.pointerDown(position, pointerId: event.pointer);
  } else if (event is PointerUpEvent) {
    hitResult = stateMachine.pointerUp(position, pointerId: event.pointer);
  } else if (event is PointerMoveEvent) {
    hitResult = stateMachine.pointerMove(position, pointerId: event.pointer);
  } else if (event is PointerHoverEvent) {
    hitResult = stateMachine.pointerMove(position, pointerId: event.pointer);
  } else if (event is PointerExitEvent) {
    hitResult = stateMachine.pointerExit(position, pointerId: event.pointer);
  } else {
    hitResult = HitResult.none;
  }

  // We handle the _previousHitResult as well to account for potential exit
  // events that may not have been processed.
  if (hitResult != HitResult.none || _previousHitResult != HitResult.none) {
    scheduleRepaint();
  }
  _previousHitResult = hitResult;
}