Skip to main content

GestureDetector

A control that detects gestures.

Attempts to recognize gestures that correspond to its non-None callbacks.

If this control has a content, it defers to that child control for its sizing behavior, else it grows to fit the parent instead.

Inherits: LayoutControl, AdaptiveControl

Properties

Events

  • on_double_tap - The user has tapped the screen with a primary button at the same location twice in quick succession.
  • on_double_tap_cancel - The pointer sequence that was expected to cause a double tap will not do so.
  • on_double_tap_down - Called when a pointer that might cause a double tap has contacted the screen at a particular location.
  • on_enter - Called when a mouse pointer has entered this control.
  • on_exit - Called when a mouse pointer has exited this control.
  • on_force_press_end - Called when the pointer that triggered a force press is no longer in contact with the screen.
  • on_force_press_peak - Called when a pointer has pressed with a force exceeding the peak pressure.
  • on_force_press_start - Called when a pointer has pressed with a force exceeding the start pressure.
  • on_force_press_update - Called for each update after a force press has started.
  • on_horizontal_drag_cancel - The pointer that previously triggered on_horizontal_drag_down will not end up causing a horizontal drag.
  • on_horizontal_drag_down - Called when a pointer has contacted the screen and might begin to move horizontally.
  • on_horizontal_drag_end - Called when a pointer moving horizontally is no longer in contact and was moving at a specific velocity.
  • on_horizontal_drag_start - Called when a pointer has contacted the screen with a primary button and has begun to move horizontally.
  • on_horizontal_drag_update - Called when a pointer that is in contact with the screen and moving horizontally has moved in the horizontal direction.
  • on_hover - Called when a mouse pointer has entered this control.
  • on_long_press - Called when a long press gesture with a primary button has been recognized.
  • on_long_press_cancel - The pointer that previously triggered on_long_press_down will not end up causing a long-press.
  • on_long_press_down - Called when a pointer that might cause a long press with a primary button has contacted the screen.
  • on_long_press_end - Called when a pointer that has triggered a long-press with a primary button has stopped contacting the screen.
  • on_long_press_move_update - Called when, after a long press has been accepted, the pointer moves.
  • on_long_press_start - Triggered when a pointer has remained in contact with the screen at the same location for a long period of time.
  • on_long_press_up - Called when a pointer that has triggered a long press with a primary button is no longer in contact with the screen.
  • on_multi_long_press - Called when a long press gesture with multiple pointers has been recognized.
  • on_multi_tap - Called when multiple pointers contacted the screen.
  • on_pan_cancel - The pointer that previously triggered on_pan_down will not end up causing a pan gesture.
  • on_pan_down - Called when a pointer has contacted the screen and might begin to move.
  • on_pan_end - Called when a pointer is no longer in contact and was moving at a specific velocity.
  • on_pan_start - Called when a pointer has contacted the screen and has begun to move.
  • on_pan_update - Called when a pointer that is in contact with the screen and moving has moved again.
  • on_right_pan_end - A pointer with secondary button pressed is no longer in contact and was moving at a specific velocity.
  • on_right_pan_start - Pointer has contacted the screen while secondary button pressed and has begun to move.
  • on_right_pan_update - A pointer that is in contact with the screen, secondary button pressed and moving has moved again.
  • on_scale_end - Called when an active scale gesture ends.
  • on_scale_start - Called when the pointers in contact with the screen have established a focal point and initial scale of 1.0.
  • on_scale_update - Called when the focal point, scale factor, or rotation of an active scale gesture changes.
  • on_scroll - Called when a pointer scroll event is received, such as a mouse wheel or trackpad scroll.
  • on_secondary_long_press - Called when a long press gesture with a secondary button has been recognized.
  • on_secondary_long_press_cancel - The pointer that previously triggered on_secondary_long_press_down not end up causing a long-press.
  • on_secondary_long_press_down - Called when a pointer that might cause a long press with a secondary button has contacted the screen.
  • on_secondary_long_press_end - Called when a pointer that has triggered a long-press with a secondary button has stopped contacting the screen.
  • on_secondary_long_press_move_update - Called when, after a secondary long press has been accepted, the pointer moves.
  • on_secondary_long_press_start - Triggered when a pointer has remained in contact with the screen at the same location for a long period of time.
  • on_secondary_long_press_up - Called when a pointer that has triggered a long press with a secondary button is no longer in contact with the screen.
  • on_secondary_tap - A tap with a secondary button has occurred.
  • on_secondary_tap_cancel - The pointer that previously triggered on_secondary_tap_down will not end up causing a tap.
  • on_secondary_tap_down - Called when a pointer that might cause a tap with a secondary button has contacted the screen at a particular location.
  • on_secondary_tap_up - Called when a pointer that will trigger a tap with a secondary button has stopped contacting the screen at a particular location.
  • on_tap - Called when a tap with a primary button has occurred.
  • on_tap_cancel - The pointer that previously triggered on_tap_down will not end up causing a tap.
  • on_tap_down - Called when a pointer that might cause a tap with a primary button has contacted the screen at a particular location.
  • on_tap_move - Called when a pointer that triggered a tap has moved.
  • on_tap_up - Called when a pointer that will trigger a tap with a primary button has stopped contacting the screen at a particular location.
  • on_tertiary_long_press - Called when a long press gesture with a tertiary button has been recognized.
  • on_tertiary_long_press_cancel - The pointer that previously triggered on_tertiary_long_press_down will not end up causing a long-press.
  • on_tertiary_long_press_down - Called when a pointer that might cause a long press with a tertiary button has contacted the screen.
  • on_tertiary_long_press_end - Called when a pointer that has triggered a long-press with a tertiary button has stopped contacting the screen.
  • on_tertiary_long_press_move_update - Called when, after a tertiary long press has been accepted, the pointer moves.
  • on_tertiary_long_press_start - Triggered when a pointer has remained in contact with the screen at the same location for a long period of time.
  • on_tertiary_long_press_up - Called when a pointer that has triggered a long press with a tertiary button is no longer in contact with the screen.
  • on_tertiary_tap_cancel - The pointer that previously triggered on_tertiary_tap_down will not end up causing a tap.
  • on_tertiary_tap_down - Called when a pointer that might cause a tap with a tertiary button has contacted the screen at a particular location.
  • on_tertiary_tap_up - Called when a pointer that will trigger a tap with a tertiary button has stopped contacting the screen at a particular location.
  • on_vertical_drag_cancel - The pointer that previously triggered on_vertical_drag_down will not end up causing a vertical drag.
  • on_vertical_drag_down - Called when a pointer has contacted the screen and might begin to move vertically.
  • on_vertical_drag_end - Called when a pointer moving vertically is no longer in contact and was moving at a specific velocity.
  • on_vertical_drag_start - Called when a pointer has contacted the screen and has begun to move vertically.
  • on_vertical_drag_update - A pointer moving vertically has moved in the vertical direction.

Examples​

Solitaire game tutorial

Handling events​

play_arrowTry Online
import flet as ft


def main(page: ft.Page):
page.add(
ft.SafeArea(
content=ft.GestureDetector(
hover_interval=50,
on_tap=lambda e: print(e),
on_tap_down=lambda e: print(e),
on_tap_up=lambda e: print(e),
on_secondary_tap=lambda e: print(e),
on_secondary_tap_down=lambda e: print(e),
on_secondary_tap_up=lambda e: print(e),
on_long_press_start=lambda e: print(e),
on_long_press_end=lambda e: print(e),
on_secondary_long_press_start=lambda e: print(e),
on_secondary_long_press_end=lambda e: print(e),
on_double_tap=lambda e: print(e),
on_double_tap_down=lambda e: print(e),
on_pan_start=lambda e: print(e),
on_pan_update=lambda e: print(e),
on_pan_end=lambda e: print(e),
on_hover=lambda e: print(e),
on_enter=lambda e: print(e),
on_exit=lambda e: print(e),
content=ft.Container(
bgcolor=ft.Colors.GREEN,
width=200,
height=200,
),
),
)
)


if __name__ == "__main__":
ft.run(main)

Draggable containers​

The following example demonstrates how a control can be freely dragged inside a Stack.

The sample also shows that GestureDetector can have a child control (blue container) as well as be nested inside another control (yellow container) giving the same results.

play_arrowTry Online
import flet as ft


def main(page: ft.Page):
def handle_pan_update1(e: ft.DragUpdateEvent[ft.GestureDetector]):
container = e.control.parent
container.top = max(0.0, container.top + e.local_delta.y)
container.left = max(0.0, container.left + e.local_delta.x)
container.update()

def handle_pan_update2(e: ft.DragUpdateEvent[ft.GestureDetector]):
e.control.top = max(0.0, e.control.top + e.local_delta.y)
e.control.left = max(0.0, e.control.left + e.local_delta.x)
e.control.update()

page.add(
ft.SafeArea(
content=ft.Stack(
width=1000,
height=500,
controls=[
ft.Container(
bgcolor=ft.Colors.AMBER,
width=50,
height=50,
left=0,
top=0,
content=ft.GestureDetector(
mouse_cursor=ft.MouseCursor.MOVE,
drag_interval=10,
on_pan_update=handle_pan_update1,
),
),
ft.GestureDetector(
mouse_cursor=ft.MouseCursor.MOVE,
drag_interval=10,
on_vertical_drag_update=handle_pan_update2,
left=100,
top=100,
content=ft.Container(
bgcolor=ft.Colors.BLUE,
width=50,
height=50,
),
),
],
),
)
)


if __name__ == "__main__":
ft.run(main)
draggable-containers

Window drag area​

play_arrowTry Online
import flet as ft


def main(page: ft.Page):
def on_pan_update(e: ft.DragUpdateEvent[ft.GestureDetector]):
page.window.left += e.global_delta.x
page.window.top += e.global_delta.y

page.add(
ft.SafeArea(
content=ft.Stack(
width=1000,
height=500,
controls=[
ft.GestureDetector(
mouse_cursor=ft.MouseCursor.MOVE,
on_pan_update=on_pan_update,
left=200,
top=200,
content=ft.Container(
bgcolor=ft.Colors.PINK,
width=50,
height=50,
),
),
],
),
)
)


if __name__ == "__main__":
ft.run(main)

Mouse cursors​

play_arrowTry Online
import random

import flet as ft


def main(page: ft.Page):
def on_pan_update(event: ft.DragUpdateEvent[ft.GestureDetector]):
container.top = max(0.0, container.top + event.local_delta.y)
container.left = max(0.0, container.left + event.local_delta.x)
container.update()

gesture_detector = ft.GestureDetector(
mouse_cursor=ft.MouseCursor.BASIC,
drag_interval=50,
on_pan_update=on_pan_update,
)
container = ft.Container(
bgcolor=ft.Colors.AMBER,
width=150,
height=150,
left=0,
top=0,
content=gesture_detector,
)

def handle_button_click(e: ft.Event[ft.Button]):
gesture_detector.mouse_cursor = random.choice(list(ft.MouseCursor))
text.value = f"Mouse Cursor: {gesture_detector.mouse_cursor}"
gesture_detector.update()
text.update()

page.add(
ft.SafeArea(
content=ft.Column(
controls=[
ft.Stack(
width=1000,
height=500,
controls=[container],
),
ft.Button("Change mouse Cursor", on_click=handle_button_click),
text := ft.Text(f"Mouse Cursor: {gesture_detector.mouse_cursor}"),
],
),
)
)


if __name__ == "__main__":
ft.run(main)

Properties​

allowed_devicesclass-attributeinstance-attribute​

allowed_devices: list[PointerDeviceType] | None = None

Restricts gesture recognition to the specified pointer device types.

If None, gestures from any supported input device can be recognized.

contentclass-attributeinstance-attribute​

content: Control | None = None

A child Control contained by the gesture detector.

drag_intervalclass-attributeinstance-attribute​

drag_interval: int = 0

Throttling in milliseconds for horizontal drag, vertical drag and pan update events.

When a user moves a pointer a lot of events are being generated to do precise tracking. drag_interval allows sending drag update events to a Flet program every X milliseconds, thus preserving the bandwidth (web and mobile apps).

0 means no throttling: all events are sent to a Flet program, resulting in very smooth tracking.

exclude_from_semanticsclass-attributeinstance-attribute​

exclude_from_semantics: bool = False

Whether the gestures of this detector should be excluded from the semantics tree.

Set this to True when the wrapped content already exposes the appropriate semantic actions and you do not want this detector to add duplicate accessibility announcements.

hover_intervalclass-attributeinstance-attribute​

hover_interval: int = 0

Throttling in milliseconds for on_hover event.

mouse_cursorclass-attributeinstance-attribute​

mouse_cursor: MouseCursor | None = None

The mouse cursor for mouse pointers that are hovering over the control.

multi_tap_touchesclass-attributeinstance-attribute​

multi_tap_touches: int = 0

The minimum number of pointers to trigger on_multi_tap event.

trackpad_scroll_causes_scaleclass-attributeinstance-attribute​

trackpad_scroll_causes_scale: bool = False

Whether trackpad scroll gestures should be interpreted as scale gestures.

When enabled, compatible trackpad pinch/scroll input can trigger on_scale_start, on_scale_update, and on_scale_end.

Events​

on_double_tapclass-attributeinstance-attribute​

on_double_tap: (
    ControlEventHandler[GestureDetector] | None
) = None

The user has tapped the screen with a primary button at the same location twice in quick succession.

on_double_tap_cancelclass-attributeinstance-attribute​

on_double_tap_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer sequence that was expected to cause a double tap will not do so.

on_double_tap_downclass-attributeinstance-attribute​

on_double_tap_down: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a double tap has contacted the screen at a particular location.

Triggered immediately after the down event of the second tap.

on_enterclass-attributeinstance-attribute​

on_enter: (
    EventHandler[HoverEvent[GestureDetector]] | None
) = None

Called when a mouse pointer has entered this control.

on_exitclass-attributeinstance-attribute​

on_exit: (
    EventHandler[HoverEvent[GestureDetector]] | None
) = None

Called when a mouse pointer has exited this control.

on_force_press_endclass-attributeinstance-attribute​

on_force_press_end: (
    EventHandler[ForcePressEvent[GestureDetector]] | None
) = None

Called when the pointer that triggered a force press is no longer in contact with the screen.

on_force_press_peakclass-attributeinstance-attribute​

on_force_press_peak: (
    EventHandler[ForcePressEvent[GestureDetector]] | None
) = None

Called when a pointer has pressed with a force exceeding the peak pressure.

on_force_press_startclass-attributeinstance-attribute​

on_force_press_start: (
    EventHandler[ForcePressEvent[GestureDetector]] | None
) = None

Called when a pointer has pressed with a force exceeding the start pressure.

on_force_press_updateclass-attributeinstance-attribute​

on_force_press_update: (
    EventHandler[ForcePressEvent[GestureDetector]] | None
) = None

Called for each update after a force press has started.

on_horizontal_drag_cancelclass-attributeinstance-attribute​

on_horizontal_drag_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_horizontal_drag_down will not end up causing a horizontal drag.

on_horizontal_drag_downclass-attributeinstance-attribute​

on_horizontal_drag_down: (
    EventHandler[DragDownEvent[GestureDetector]] | None
) = None

Called when a pointer has contacted the screen and might begin to move horizontally.

on_horizontal_drag_endclass-attributeinstance-attribute​

on_horizontal_drag_end: (
    EventHandler[DragEndEvent[GestureDetector]] | None
) = None

Called when a pointer moving horizontally is no longer in contact and was moving at a specific velocity.

on_horizontal_drag_startclass-attributeinstance-attribute​

on_horizontal_drag_start: (
    EventHandler[DragStartEvent[GestureDetector]] | None
) = None

Called when a pointer has contacted the screen with a primary button and has begun to move horizontally.

on_horizontal_drag_updateclass-attributeinstance-attribute​

on_horizontal_drag_update: (
    EventHandler[DragUpdateEvent[GestureDetector]] | None
) = None

Called when a pointer that is in contact with the screen and moving horizontally has moved in the horizontal direction.

on_hoverclass-attributeinstance-attribute​

on_hover: (
    EventHandler[HoverEvent[GestureDetector]] | None
) = None

Called when a mouse pointer has entered this control.

on_long_pressclass-attributeinstance-attribute​

on_long_press: (
    ControlEventHandler[GestureDetector] | None
) = None

Called when a long press gesture with a primary button has been recognized.

on_long_press_cancelclass-attributeinstance-attribute​

on_long_press_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_long_press_down will not end up causing a long-press.

on_long_press_downclass-attributeinstance-attribute​

on_long_press_down: (
    EventHandler[LongPressDownEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a long press with a primary button has contacted the screen.

on_long_press_endclass-attributeinstance-attribute​

on_long_press_end: (
    EventHandler[LongPressEndEvent[GestureDetector]] | None
) = None

Called when a pointer that has triggered a long-press with a primary button has stopped contacting the screen.

on_long_press_move_updateclass-attributeinstance-attribute​

on_long_press_move_update: (
    EventHandler[LongPressMoveUpdateEvent[GestureDetector]]
    | None
) = None

Called when, after a long press has been accepted, the pointer moves.

on_long_press_startclass-attributeinstance-attribute​

on_long_press_start: (
    EventHandler[LongPressStartEvent[GestureDetector]]
    | None
) = None

Triggered when a pointer has remained in contact with the screen at the same location for a long period of time.

on_long_press_upclass-attributeinstance-attribute​

on_long_press_up: (
    ControlEventHandler[GestureDetector] | None
) = None

Called when a pointer that has triggered a long press with a primary button is no longer in contact with the screen.

on_multi_long_pressclass-attributeinstance-attribute​

on_multi_long_press: (
    EventHandler[LongPressEndEvent[GestureDetector]] | None
) = None

Called when a long press gesture with multiple pointers has been recognized.

on_multi_tapclass-attributeinstance-attribute​

on_multi_tap: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when multiple pointers contacted the screen.

on_pan_cancelclass-attributeinstance-attribute​

on_pan_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_pan_down will not end up causing a pan gesture.

on_pan_downclass-attributeinstance-attribute​

on_pan_down: (
    EventHandler[DragDownEvent[GestureDetector]] | None
) = None

Called when a pointer has contacted the screen and might begin to move.

on_pan_endclass-attributeinstance-attribute​

on_pan_end: (
    EventHandler[DragEndEvent[GestureDetector]] | None
) = None

Called when a pointer is no longer in contact and was moving at a specific velocity.

on_pan_startclass-attributeinstance-attribute​

on_pan_start: (
    EventHandler[DragStartEvent[GestureDetector]] | None
) = None

Called when a pointer has contacted the screen and has begun to move.

on_pan_updateclass-attributeinstance-attribute​

on_pan_update: (
    EventHandler[DragUpdateEvent[GestureDetector]] | None
) = None

Called when a pointer that is in contact with the screen and moving has moved again.

on_right_pan_endclass-attributeinstance-attribute​

on_right_pan_end: (
    EventHandler[PointerEvent[GestureDetector]] | None
) = None

A pointer with secondary button pressed is no longer in contact and was moving at a specific velocity.

on_right_pan_startclass-attributeinstance-attribute​

on_right_pan_start: (
    EventHandler[PointerEvent[GestureDetector]] | None
) = None

Pointer has contacted the screen while secondary button pressed and has begun to move.

on_right_pan_updateclass-attributeinstance-attribute​

on_right_pan_update: (
    EventHandler[PointerEvent[GestureDetector]] | None
) = None

A pointer that is in contact with the screen, secondary button pressed and moving has moved again.

on_scale_endclass-attributeinstance-attribute​

on_scale_end: (
    EventHandler[ScaleEndEvent[GestureDetector]] | None
) = None

Called when an active scale gesture ends.

on_scale_startclass-attributeinstance-attribute​

on_scale_start: (
    EventHandler[ScaleStartEvent[GestureDetector]] | None
) = None

Called when the pointers in contact with the screen have established a focal point and initial scale of 1.0.

on_scale_updateclass-attributeinstance-attribute​

on_scale_update: (
    EventHandler[ScaleUpdateEvent[GestureDetector]] | None
) = None

Called when the focal point, scale factor, or rotation of an active scale gesture changes.

on_scrollclass-attributeinstance-attribute​

on_scroll: (
    EventHandler[ScrollEvent[GestureDetector]] | None
) = None

Called when a pointer scroll event is received, such as a mouse wheel or trackpad scroll.

on_secondary_long_pressclass-attributeinstance-attribute​

on_secondary_long_press: (
    ControlEventHandler[GestureDetector] | None
) = None

Called when a long press gesture with a secondary button has been recognized.

on_secondary_long_press_cancelclass-attributeinstance-attribute​

on_secondary_long_press_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_secondary_long_press_down not end up causing a long-press.

on_secondary_long_press_downclass-attributeinstance-attribute​

on_secondary_long_press_down: (
    EventHandler[LongPressDownEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a long press with a secondary button has contacted the screen.

on_secondary_long_press_endclass-attributeinstance-attribute​

on_secondary_long_press_end: (
    EventHandler[LongPressEndEvent[GestureDetector]] | None
) = None

Called when a pointer that has triggered a long-press with a secondary button has stopped contacting the screen.

on_secondary_long_press_move_updateclass-attributeinstance-attribute​

on_secondary_long_press_move_update: (
    EventHandler[LongPressMoveUpdateEvent[GestureDetector]]
    | None
) = None

Called when, after a secondary long press has been accepted, the pointer moves.

on_secondary_long_press_startclass-attributeinstance-attribute​

on_secondary_long_press_start: (
    EventHandler[LongPressStartEvent[GestureDetector]]
    | None
) = None

Triggered when a pointer has remained in contact with the screen at the same location for a long period of time.

on_secondary_long_press_upclass-attributeinstance-attribute​

on_secondary_long_press_up: (
    ControlEventHandler[GestureDetector] | None
) = None

Called when a pointer that has triggered a long press with a secondary button is no longer in contact with the screen.

on_secondary_tapclass-attributeinstance-attribute​

on_secondary_tap: (
    ControlEventHandler[GestureDetector] | None
) = None

A tap with a secondary button has occurred.

on_secondary_tap_cancelclass-attributeinstance-attribute​

on_secondary_tap_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_secondary_tap_down will not end up causing a tap.

on_secondary_tap_downclass-attributeinstance-attribute​

on_secondary_tap_down: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a tap with a secondary button has contacted the screen at a particular location.

on_secondary_tap_upclass-attributeinstance-attribute​

on_secondary_tap_up: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that will trigger a tap with a secondary button has stopped contacting the screen at a particular location.

on_tapclass-attributeinstance-attribute​

on_tap: EventHandler[TapEvent[GestureDetector]] | None = (
    None
)

Called when a tap with a primary button has occurred.

on_tap_cancelclass-attributeinstance-attribute​

on_tap_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_tap_down will not end up causing a tap.

on_tap_downclass-attributeinstance-attribute​

on_tap_down: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a tap with a primary button has contacted the screen at a particular location.

on_tap_moveclass-attributeinstance-attribute​

on_tap_move: (
    EventHandler[TapMoveEvent[GestureDetector]] | None
) = None

Called when a pointer that triggered a tap has moved.

on_tap_upclass-attributeinstance-attribute​

on_tap_up: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that will trigger a tap with a primary button has stopped contacting the screen at a particular location.

on_tertiary_long_pressclass-attributeinstance-attribute​

on_tertiary_long_press: (
    ControlEventHandler[GestureDetector] | None
) = None

Called when a long press gesture with a tertiary button has been recognized.

on_tertiary_long_press_cancelclass-attributeinstance-attribute​

on_tertiary_long_press_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_tertiary_long_press_down will not end up causing a long-press.

on_tertiary_long_press_downclass-attributeinstance-attribute​

on_tertiary_long_press_down: (
    EventHandler[LongPressDownEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a long press with a tertiary button has contacted the screen.

on_tertiary_long_press_endclass-attributeinstance-attribute​

on_tertiary_long_press_end: (
    EventHandler[LongPressEndEvent[GestureDetector]] | None
) = None

Called when a pointer that has triggered a long-press with a tertiary button has stopped contacting the screen.

on_tertiary_long_press_move_updateclass-attributeinstance-attribute​

on_tertiary_long_press_move_update: (
    EventHandler[LongPressMoveUpdateEvent[GestureDetector]]
    | None
) = None

Called when, after a tertiary long press has been accepted, the pointer moves.

on_tertiary_long_press_startclass-attributeinstance-attribute​

on_tertiary_long_press_start: (
    EventHandler[LongPressStartEvent[GestureDetector]]
    | None
) = None

Triggered when a pointer has remained in contact with the screen at the same location for a long period of time.

on_tertiary_long_press_upclass-attributeinstance-attribute​

on_tertiary_long_press_up: (
    ControlEventHandler[GestureDetector] | None
) = None

Called when a pointer that has triggered a long press with a tertiary button is no longer in contact with the screen.

on_tertiary_tap_cancelclass-attributeinstance-attribute​

on_tertiary_tap_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_tertiary_tap_down will not end up causing a tap.

on_tertiary_tap_downclass-attributeinstance-attribute​

on_tertiary_tap_down: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that might cause a tap with a tertiary button has contacted the screen at a particular location.

on_tertiary_tap_upclass-attributeinstance-attribute​

on_tertiary_tap_up: (
    EventHandler[TapEvent[GestureDetector]] | None
) = None

Called when a pointer that will trigger a tap with a tertiary button has stopped contacting the screen at a particular location.

on_vertical_drag_cancelclass-attributeinstance-attribute​

on_vertical_drag_cancel: (
    ControlEventHandler[GestureDetector] | None
) = None

The pointer that previously triggered on_vertical_drag_down will not end up causing a vertical drag.

on_vertical_drag_downclass-attributeinstance-attribute​

on_vertical_drag_down: (
    EventHandler[DragDownEvent[GestureDetector]] | None
) = None

Called when a pointer has contacted the screen and might begin to move vertically.

on_vertical_drag_endclass-attributeinstance-attribute​

on_vertical_drag_end: (
    EventHandler[DragEndEvent[GestureDetector]] | None
) = None

Called when a pointer moving vertically is no longer in contact and was moving at a specific velocity.

on_vertical_drag_startclass-attributeinstance-attribute​

on_vertical_drag_start: (
    EventHandler[DragStartEvent[GestureDetector]] | None
) = None

Called when a pointer has contacted the screen and has begun to move vertically.

on_vertical_drag_updateclass-attributeinstance-attribute​

on_vertical_drag_update: (
    EventHandler[DragUpdateEvent[GestureDetector]] | None
) = None

A pointer moving vertically has moved in the vertical direction.