Gesture

Pointers

  • ユーザとデバイス間の直接的なやりとりについてのもの(以下の4つがある)
    • PointerDownEvent
    • PointerMoveEvent
    • PointerUpEvent
    • PointerCancelEvent
  • 上記イベントには最も内側のWidgetが反応する
  • そこからバブリングしていくが、これを止める方法はない
  • 基本的に次のGestureを使う

Gestures

  • 複数のPointerイベントで認識される意味的な動作のこと

Tap

  • タップ開始、終了などを検知する

Double Tap

  • ダブルタップのこと

Long Press

  • 長時間同じ箇所をタップしている

Vertical Drag

  • 垂直方向のDrag開始、移動中、終了までを検知できる

Horizontal Drag

  • 水平方向のDrag開始、移動中、終了までを検知できる

Pan

  • 水平 or 垂直方向のDragの開始、移動中、終了までを検知する
  • ↑のDrag系と一緒に設定されるとクラッシュする

Widgetに検知機能を加える

  • GestureDetectorを使う

Gestureの明確化

  • 画面上には複数のGestureへの検知機構がある可能性がある
  • 複数のGesture検知がある場合、flutterは検知機構に競争を以下のルールでさせる
    • 検知機構はいつでも検知を諦められ、残った最後の一つが勝者となる
    • 検知機構はいつでも勝利を宣言でき、他の機構は諦めたことになる
  • 例えば水平方向と垂直方向のGesture検知があった場合、以下のようになる
    • タップした時点で、↑の2つの検知機構が競争に参加する
    • 垂直に数ピクセル動いたタイミングで、垂直方向の検知機構が勝利を宣言する