在Flutter框架中, Listener
组件是一个非可视组件,用于监听指针事件并将其路由到其子项。它类似于GestureDetector
组件,但它适用于监听更低级别和更原始的事件。它可用于监听onPointerDown
,onPointerMove
,onPointerUp
,onPointerCancel
,onPointerSignal
等事件。
通常在需要处理未被内置手势识别器覆盖的指针事件或以更原始、低级别的方式处理事件时使用。它通过将子级包装在Listener
中并将子级的指针事件传递给onPointerDown
,onPointerMove
,onPointerUp
,onPointerCancel
,onPointerSignal
回调函数来工作。
需要注意的是, Listener组件不会阻止指针事件传递到层级结构中的其他组件.如果需要这种行为, 应使用AbsorbPointer组件.
Listener
的事件介绍如下:
- onPointerDown:按下时回调
- onPointerMove:移动时回调
- onPointerUp:抬起时回调
常用属性说明如下:
position
:相对屏幕的坐标的偏移。localPosition
:相对当前控件的偏移。pressure
:按压力度。delta
:2次指针移动事件的偏移。orientation
:指针移动方向
示范
Listener(
onPointerDown: (PointerDownEvent pointerDownEvent) {
print('$pointerDownEvent');
},
onPointerMove: (PointerMoveEvent pointerMoveEvent) {
print('$pointerMoveEvent');
},
onPointerUp: (PointerUpEvent upEvent) {
print('$upEvent');
},
child: Container(
height: 200,
width: 200,
color: Colors.blue,
alignment: Alignment.center,
),
)