MouseRegion class
A widget that tracks the movement of mice, even when no button is pressed.
It does not listen to events that can construct gestures, such as when the pointer is pressed, moved, then released or canceled. For these events, use Listener, or more preferably, 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.
To create a local project with this code sample, run:
flutter create --sample=widgets.MouseRegion.1 mysample
flutter create --sample=widgets.MouseRegion.1 mysample
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/widgets.dart';
// ...
int _enterCounter = 0;
int _exitCounter = 0;
double x = 0.0;
double y = 0.0;
void _incrementEnter(PointerEvent details) {
setState(() {
_enterCounter++;
});
}
void _incrementExit(PointerEvent details) {
setState(() {
_exitCounter++;
});
}
void _updateLocation(PointerEvent details) {
setState(() {
x = details.position.dx;
y = details.position.dy;
});
}
@override
Widget build(BuildContext context) {
return ConstrainedBox(
constraints: new BoxConstraints.tight(Size(300.0, 200.0)),
child: MouseRegion(
onEnter: _incrementEnter,
onHover: _updateLocation,
onExit: _incrementExit,
child: Container(
color: Colors.lightBlueAccent,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('You have entered or exited this box this many times:'),
Text(
'$_enterCounter Entries\n$_exitCounter Exits',
style: Theme.of(context).textTheme.headline4,
),
Text(
'The cursor is here: (${x.toStringAsFixed(2)}, ${y.toStringAsFixed(2)})',
),
],
),
),
),
);
}
See also:
- Listener, a similar widget that tracks pointer events when the pointer has buttons pressed.
- Inheritance
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- MouseRegion
Constructors
-
MouseRegion({Key key,
void onEnter(PointerEnterEvent event ), void onExit(PointerExitEvent event ), void onHover(PointerHoverEvent event ), MouseCursor cursor: MouseCursor.defer, bool opaque: true, Widget child} ) -
Creates a widget that forwards mouse events to callbacks. [...]
const
Properties
- child → Widget
-
The widget below this widget in the tree. [...]
final
- cursor → MouseCursor
-
The mouse cursor for mouse pointers that are hovering over the region. [...]
final
- hashCode → int
-
The hash code for this object. [...]
@nonVirtual, read-only, inherited
- key → Key
-
Controls how one widget replaces another widget in the tree. [...]
final, inherited
-
onEnter
→ void Function(PointerEnterEvent event
) -
Triggered when a mouse pointer has entered this widget. [...]
final
-
onExit
→ void Function(PointerExitEvent event
) -
Triggered when a mouse pointer has exited this widget when the widget is
still mounted. [...]
final
-
onHover
→ void Function(PointerHoverEvent event
) -
Triggered when a mouse pointer has moved onto or within the widget without
buttons pressed. [...]
final
- opaque → bool
-
Whether this widget should prevent other MouseRegions visually behind it
from detecting the pointer. [...]
final
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Methods
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree. [...]
inherited
-
createState(
) → _MouseRegionState -
Creates the mutable state for this widget at a given location in the tree. [...]
override
-
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. [...]
override
-
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.info} ) → 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 ==(
Object other ) → bool -
The equality operator. [...]
@nonVirtual, inherited