跳至主要內容

GestureRecognizer 清理

摘要

#

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