onPanDown method

GestureDetector onPanDown(
  1. GestureDragDownCallback onPanDown, {
  2. HitTestBehavior? behavior,
  3. bool excludeFromSemantics = false,
  4. DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  5. bool trackpadScrollCausesScale = false,
  6. Offset trackpadScrollToScaleFactor = kDefaultTrackpadScrollToScaleFactor,
  7. Set<PointerDeviceKind>? supportedDevices,
})

Wraps the widget in a GestureDetector that responds to pan down events.

This method is called when a pan gesture begins. Pan gestures allow free-direction dragging without being constrained to horizontal or vertical movement. This is the most flexible drag gesture and is commonly used for moving objects around the screen, implementing custom scrolling behavior, or creating interactive canvases.

Parameters:

  • onPanDown: The callback to execute when a pan down occurs. Provides DragDownDetails with information about the initial touch position.
  • behavior: How the gesture detector should behave during hit testing.
  • excludeFromSemantics: Whether to exclude from semantic tree. Defaults to false.
  • dragStartBehavior: When drag gestures should start. Defaults to DragStartBehavior.start.
  • trackpadScrollCausesScale: Whether trackpad scrolling causes scaling. Defaults to false.
  • trackpadScrollToScaleFactor: Scale factor for trackpad scroll conversion.
  • supportedDevices: Set of supported pointer device kinds.

Returns a GestureDetector widget that responds to pan down events.

Example:

Container(
  child: Text('Drag me anywhere'),
).onPanDown((details) {
  print('Pan started at: ${details.localPosition}');
  // Initialize free-direction drag state
});

Implementation

GestureDetector onPanDown(
  GestureDragDownCallback onPanDown, {
  HitTestBehavior? behavior,
  bool excludeFromSemantics = false,
  DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  bool trackpadScrollCausesScale = false,
  Offset trackpadScrollToScaleFactor = kDefaultTrackpadScrollToScaleFactor,
  Set<PointerDeviceKind>? supportedDevices,
}) {
  return GestureDetector(
    onPanDown: onPanDown,
    behavior: behavior,
    excludeFromSemantics: excludeFromSemantics,
    dragStartBehavior: dragStartBehavior,
    trackpadScrollCausesScale: trackpadScrollCausesScale,
    trackpadScrollToScaleFactor: trackpadScrollToScaleFactor,
    supportedDevices: supportedDevices,
    child: this,
  );
}