Skip to main content

GestureRecognizer 清理

OneSequenceGestureRecognizer 子類別應該 覆寫 `addAllowedPointer` 以接收 `PointerDownEvent`

摘要

#

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: