Listener class

A widget that calls callbacks in response to common pointer events.

It listens to events that can construct gestures, such as when the pointer is pressed, moved, then released or canceled.

It does not listen to events that are exclusive to mouse, such as when the mouse enters, exits or hovers a region without pressing any buttons. For these events, use MouseRegion.

Rather than listening for raw pointer events, consider listening for higher-level gestures using GestureDetector.

Layout behavior

See BoxConstraints for an introduction to box layout models.

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

This example makes a Container react to being touched, showing a count of the number of pointer downs and ups.
import 'package:flutter/widgets.dart';

// ...

int _downCounter = 0;
int _upCounter = 0;
double x = 0.0;
double y = 0.0;

void _incrementDown(PointerEvent details) {
  _updateLocation(details);
  setState(() {
    _downCounter++;
  });
}
void _incrementUp(PointerEvent details) {
  _updateLocation(details);
  setState(() {
    _upCounter++;
  });
}
void _updateLocation(PointerEvent details) {
  setState(() {
    x = details.position.dx;
    y = details.position.dy;
  });
}

@override
Widget build(BuildContext context) {
  return Center(
    child: ConstrainedBox(
      constraints: new BoxConstraints.tight(Size(300.0, 200.0)),
      child: Listener(
        onPointerDown: _incrementDown,
        onPointerMove: _updateLocation,
        onPointerUp: _incrementUp,
        child: Container(
          color: Colors.lightBlueAccent,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('You have pressed or released in this area this many times:'),
              Text(
                '$_downCounter presses\n$_upCounter releases',
                style: Theme.of(context).textTheme.display1,
              ),
              Text(
                'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',
              ),
            ],
          ),
        ),
      ),
    ),
  );
}

Inheritance

Constructors

Listener({Key key, PointerDownEventListener onPointerDown, PointerMoveEventListener onPointerMove, @Deprecated('Use MouseRegion.onEnter instead') PointerEnterEventListener onPointerEnter, @Deprecated('Use MouseRegion.onExit instead') PointerExitEventListener onPointerExit, @Deprecated('Use MouseRegion.onHover instead') PointerHoverEventListener onPointerHover, PointerUpEventListener onPointerUp, PointerCancelEventListener onPointerCancel, PointerSignalEventListener onPointerSignal, HitTestBehavior behavior: HitTestBehavior.deferToChild, Widget child })
Creates a widget that forwards point events to callbacks. [...]
const

Properties

behavior HitTestBehavior
How to behave during hit testing.
final
onPointerCancel PointerCancelEventListener
Called when the input from a pointer that triggered an onPointerDown is no longer directed towards this receiver.
final
onPointerDown PointerDownEventListener
Called when a pointer comes into contact with the screen (for touch pointers), or has its button pressed (for mouse pointers) at this widget's location.
final
onPointerEnter PointerEnterEventListener
Called when a pointer enters the region for this widget. [...]
final
onPointerExit PointerExitEventListener
Called when a pointer leaves the region for this widget. [...]
final
onPointerHover PointerHoverEventListener
Called when a pointer that has not triggered an onPointerDown changes position. [...]
final
onPointerMove PointerMoveEventListener
Called when a pointer that triggered an onPointerDown changes position.
final
onPointerSignal PointerSignalEventListener
Called when a pointer signal occurs over this object.
final
onPointerUp PointerUpEventListener
Called when a pointer that triggered an onPointerDown is no longer in contact with the screen.
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 DiagnosticsNode.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