Flutter 移入事件的监听

7 min read

在Flutter框架中, Listener组件是一个非可视组件,用于监听指针事件并将其路由到其子项。它类似于GestureDetector组件,但它适用于监听更低级别和更原始的事件。它可用于监听onPointerDownonPointerMoveonPointerUponPointerCancelonPointerSignal等事件。

通常在需要处理未被内置手势识别器覆盖的指针事件或以更原始、低级别的方式处理事件时使用。它通过将子级包装在Listener中并将子级的指针事件传递给onPointerDownonPointerMoveonPointerUponPointerCancelonPointerSignal回调函数来工作。

需要注意的是, 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,
  ),
)