GestureDetector class

A widget that detects gestures.

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

If this widget has a child, it defers to that child for its sizing behavior. If it does not have a child, it grows to fit the parent instead.

By default a GestureDetector with an invisible child ignores touches; this behavior can be controlled with behavior.

GestureDetector also listens for accessibility events and maps them to the callbacks. To ignore accessibility events, set excludeFromSemantics to true.

See flutter.io/gestures/ for additional information.

Material design applications typically react to touches with ink splash effects. The InkWell class implements this effect and can be used in place of a GestureDetector for handling taps.

This example makes a rectangle react to being tapped by setting the _lights field:
GestureDetector(
  onTap: () {
    setState(() { _lights = true; });
  },
  child: Container(
    color: Colors.yellow,
    child: Text('TURN LIGHTS ON'),
  ),
)

Debugging

To see how large the hit test box of a GestureDetector is for debugging purposes, set debugPaintPointersEnabled to true.

Inheritance

Constructors

GestureDetector({Key key, Widget child, GestureTapDownCallback onTapDown, GestureTapUpCallback onTapUp, GestureTapCallback onTap, GestureTapCancelCallback onTapCancel, GestureTapCallback onDoubleTap, GestureLongPressCallback onLongPress, GestureLongPressUpCallback onLongPressUp, GestureDragDownCallback onVerticalDragDown, GestureDragStartCallback onVerticalDragStart, GestureDragUpdateCallback onVerticalDragUpdate, GestureDragEndCallback onVerticalDragEnd, GestureDragCancelCallback onVerticalDragCancel, GestureDragDownCallback onHorizontalDragDown, GestureDragStartCallback onHorizontalDragStart, GestureDragUpdateCallback onHorizontalDragUpdate, GestureDragEndCallback onHorizontalDragEnd, GestureDragCancelCallback onHorizontalDragCancel, GestureDragDownCallback onPanDown, GestureDragStartCallback onPanStart, GestureDragUpdateCallback onPanUpdate, GestureDragEndCallback onPanEnd, GestureDragCancelCallback onPanCancel, GestureScaleStartCallback onScaleStart, GestureScaleUpdateCallback onScaleUpdate, GestureScaleEndCallback onScaleEnd, HitTestBehavior behavior, bool excludeFromSemantics: false })
Creates a widget that detects gestures. [...]

Properties

behavior HitTestBehavior
How this gesture detector should behave during hit testing. [...]
final
child Widget
The widget below this widget in the tree. [...]
final
excludeFromSemantics bool
Whether to exclude these gestures from the semantics tree. For example, the long-press gesture for showing a tooltip is excluded because the tooltip itself is included in the semantics tree directly and so having a gesture to show it would result in duplication of information.
final
onDoubleTap GestureTapCallback
The user has tapped the screen at the same location twice in quick succession.
final
onHorizontalDragCancel GestureDragCancelCallback
The pointer that previously triggered onHorizontalDragDown did not complete.
final
onHorizontalDragDown GestureDragDownCallback
A pointer has contacted the screen and might begin to move horizontally.
final
onHorizontalDragEnd GestureDragEndCallback
A pointer that was previously in contact with the screen and moving horizontally is no longer in contact with the screen and was moving at a specific velocity when it stopped contacting the screen.
final
onHorizontalDragStart GestureDragStartCallback
A pointer has contacted the screen and has begun to move horizontally.
final
onHorizontalDragUpdate GestureDragUpdateCallback
A pointer that is in contact with the screen and moving horizontally has moved in the horizontal direction.
final
onLongPress GestureLongPressCallback
A pointer has remained in contact with the screen at the same location for a long period of time.
final
onLongPressUp GestureLongPressUpCallback
A pointer that has triggered a long-press has stopped contacting the screen.
final
onPanCancel GestureDragCancelCallback
The pointer that previously triggered onPanDown did not complete.
final
onPanDown GestureDragDownCallback
A pointer has contacted the screen and might begin to move.
final
onPanEnd GestureDragEndCallback
A pointer that was previously in contact with the screen and moving is no longer in contact with the screen and was moving at a specific velocity when it stopped contacting the screen.
final
onPanStart GestureDragStartCallback
A pointer has contacted the screen and has begun to move.
final
onPanUpdate GestureDragUpdateCallback
A pointer that is in contact with the screen and moving has moved again.
final
onScaleEnd GestureScaleEndCallback
The pointers are no longer in contact with the screen.
final
onScaleStart GestureScaleStartCallback
The pointers in contact with the screen have established a focal point and initial scale of 1.0.
final
onScaleUpdate GestureScaleUpdateCallback
The pointers in contact with the screen have indicated a new focal point and/or scale.
final
onTap GestureTapCallback
A tap has occurred. [...]
final
onTapCancel GestureTapCancelCallback
The pointer that previously triggered onTapDown will not end up causing a tap. [...]
final
onTapDown GestureTapDownCallback
A pointer that might cause a tap has contacted the screen at a particular location. [...]
final
onTapUp GestureTapUpCallback
A pointer that will trigger a tap has stopped contacting the screen at a particular location. [...]
final
onVerticalDragCancel GestureDragCancelCallback
The pointer that previously triggered onVerticalDragDown did not complete.
final
onVerticalDragDown GestureDragDownCallback
A pointer has contacted the screen and might begin to move vertically.
final
onVerticalDragEnd GestureDragEndCallback
A pointer that was previously in contact with the screen and moving vertically is no longer in contact with the screen and was moving at a specific velocity when it stopped contacting the screen.
final
onVerticalDragStart GestureDragStartCallback
A pointer has contacted the screen and has begun to move vertically.
final
onVerticalDragUpdate GestureDragUpdateCallback
A pointer that is in contact with the screen and moving vertically has moved in the vertical direction.
final
hashCode int
The hash code for this object. [...]
read-only, inherited
key Key
Controls how one widget replaces another widget in the tree. [...]
final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited

Methods

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget. [...]
override
createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree. [...]
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
@protected, inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by toStringDeep. [...]
inherited
toString({DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a string representation of this object.
inherited
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a string representation of this node and its descendants. [...]
inherited
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a one-line detailed description of the object. [...]
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(dynamic other) bool
The equality operator. [...]
inherited