跳至主要内容

手势识别器清理

摘要

#

OneSequenceGestureRecognizer.addAllowedPointer() 已更改为接受 PointerDownEvent,就像其超类一样。以前,它接受更通用的 PointerEvent 类型,这是不正确的。

上下文

#

框架只传递 PointerDownEvent 对象到 addAllowedPointer()。将 OneSequenceGestureRecognizer.addAllowedPointer() 声明为接受更通用的类型会造成混淆,并导致 OneSequenceGestureRecognizer 子类必须将其参数转换为正确的类。

更改说明

#

之前的声明强制OneSequenceGestureRecognizer的后代重写addAllowedPointer(),如下所示

dart
class CustomGestureRecognizer extends ScaleGestureRecognizer {
  @override
  void addAllowedPointer(PointerEvent event) {
    // insert custom handling of event here...
    super.addAllowedPointer(event);
  }
}

新的方法声明将导致此代码失败,并显示以下错误消息

super.addAllowedPointer(event); The argument type 'PointerEvent' can't be assigned to the parameter type 'PointerDownEvent'.
                                #argument_type_not_assignable

迁移指南

#

迁移前的代码

dart
class CustomGestureRecognizer extends ScaleGestureRecognizer {
  @override
  void addAllowedPointer(PointerEvent event) {
    // insert custom handling of event here...
    super.addAllowedPointer(event);
  }
}

迁移后的代码

dart
class CustomGestureRecognizer extends ScaleGestureRecognizer {
  @override
  void addAllowedPointer(PointerDownEvent event) {
    // insert custom handling of event here...
    super.addAllowedPointer(event);
  }
}

时间线

#

包含于版本:2.3.0-13.0.pre
稳定版本:2.5

参考

#

API 文档

相关 PR