handlePointerEvent method

  1. @override
void handlePointerEvent(
  1. PointerEvent event
)
override

Dispatch an event to the targets found by a hit test on its position.

This method sends the given event to dispatchEvent based on event types:

Implementation

@override
void handlePointerEvent(PointerEvent event) {
  if (locked) {
    return;
  }

  final device = this.device;
  if (device == null) {
    super.handlePointerEvent(event);
    return;
  }

  final flutterView = platformDispatcher.implicitView!;
  final realPixelRatio = flutterView.parent.devicePixelRatio;
  final virtualPixelRatio = flutterView.devicePixelRatio;
  final scale = virtualPixelRatio / realPixelRatio;

  event = event.copyWith(
    position: event.position * scale,
    delta: event.delta * scale,
  );

  final screenArea = VirtualTransforms.screenDestinationRect(
    device,
    orientation,
  );

  if (!screenArea.contains(event.position)) {
    return;
  }

  final relativePosition = Offset(
    (event.position.dx - screenArea.left) / screenArea.width,
    (event.position.dy - screenArea.top) / screenArea.height,
  );

  final relativeDelta = Offset(
    event.delta.dx / screenArea.width,
    event.delta.dy / screenArea.height,
  );

  final screenSize = device.screenSizeOn(orientation);

  final transformedEvent = event.copyWith(
    position: Offset(
      relativePosition.dx * screenSize.width,
      relativePosition.dy * screenSize.height,
    ),
    delta: Offset(
      relativeDelta.dx * screenSize.width,
      relativeDelta.dy * screenSize.height,
    ),
  );

  super.handlePointerEvent(transformedEvent);
}