Listener class

A widget that calls callbacks in response to pointer events.

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 entered by a mouse pointer, showing a count of the number of entries and exits.
import 'package:flutter/gestures.dart';

// ...

int _enterCounter = 0;
int _exitCounter = 0;
double x = 0.0;
double y = 0.0;

void _incrementCounter(PointerEnterEvent details) {
  setState(() {
    _enterCounter++;
  });
}

void _decrementCounter(PointerExitEvent details) {
  setState(() {
    _exitCounter++;
  });
}

void _updateLocation(PointerHoverEvent 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(
        onPointerEnter: _incrementCounter,
        onPointerHover: _updateLocation,
        onPointerExit: _decrementCounter,
        child: Container(
          color: Colors.lightBlueAccent,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('You have pointed at this box this many times:'),
              Text(
                '$_enterCounter Entries\n$_exitCounter Exits',
                style: Theme.of(context).textTheme.display1,
              ),
              Text(
                'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',
              ),
            ],
          ),
        ),
      ),
    ),
  );
}

See also:

Inheritance

Constructors

Listener({Key key, PointerDownEventListener onPointerDown, PointerMoveEventListener onPointerMove, PointerEnterEventListener onPointerEnter, PointerExitEventListener onPointerExit, 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
child Widget
The widget below this widget in the tree. [...]
final, inherited
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

createRenderObject(BuildContext context) RenderPointerListener
Creates an instance of the RenderObject class that this RenderObjectWidget represents, using the configuration described by this RenderObjectWidget. [...]
override
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
override
updateRenderObject(BuildContext context, covariant RenderPointerListener renderObject) → void
Copies the configuration described by this RenderObjectWidget to the given RenderObject, which will be of the same type as returned by this object's createRenderObject. [...]
override
createElement() SingleChildRenderObjectElement
RenderObjectWidgets always inflate to a RenderObjectElement subclass.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
@protected, inherited
didUnmountRenderObject(covariant RenderObject renderObject) → void
A render object previously associated with this widget has been removed from the tree. The given RenderObject will be of the same type as returned by this object's createRenderObject.
@protected, 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