Upgrade to Pro — share decks privately, control downloads, hide ads and more …

カスタムジェスチャーの実装から学ぶGesture

Avatar for Hirokazu Tanaka Hirokazu Tanaka
November 12, 2025
67

 カスタムジェスチャーの実装から学ぶGesture

概要
Flutterの標準的なジェスチャー検出は強力ですが、特定の開発シーンでは複数のジェスチャーの競合や、ユーザー体験に合わせた独自動作の定義といった課題に直面します。
本セッションでは、こうした課題を踏まえて、Flutterアプリにおけるカスタムジェスチャーの実装例を軸に、Gestureの認識メカニズムや競合解決のアプローチなど、内部処理を含めて掘り下げて解説します。
- Flutterにおけるジェスチャー検出の基礎
- ジェスチャーの認識メカニズムと競合

Avatar for Hirokazu Tanaka

Hirokazu Tanaka

November 12, 2025
Tweet

Transcript

  1. FlutterのアーキテクチャーからGestureを眺める 以下の2つのレイヤーで 定義されている • Gestures • Pointers 画像引用: 「Flutter architectural

    overview」https://docs.flutter.dev/resources/architectural-overview FlutterフレームワークのFoundationの上に成り立っている
  2. 22 斜めスクロールではない場合 • GestureArena に対して ◦ GestureDisposition.rejected ▪ 斜めスクロールジェスチャーが 敗北宣言

    • GestureArena から ◦ rejectGesture が呼ばれる GestureArena に登録されている縦スクロール のジェスチャーが呼ばれる
  3. 23 斜めスクロールの場合 • GestureArena に対して ◦ GestureDisposition.accepted ▪ ジェスチャーが勝利宣言 •

    GestureArena から ◦ acceptGesture が呼ばれる ◦ rejectGesture を通知 ▪ 他のRecognizer は敗北する 斜めスクロールジェスチャーでカード UIが 横スクロールされる
  4. まとめ Gesture 周りの必須概念の以下の3つを実例を用いながら紹介 • RawGestureDetector: ジェスチャーのWidget • GestureRecognizer: ジェスチャーの条件 •

    GestureArena: 他のGestureRecognizerとの競合解決 紹介した仕組みを理解しておくと、意図しない動作を防いだり、 ユーザーの自然な操作をそのままUXにつなげたりできる
  5. 参考文献 • Flutter Gesture - Qiita • Flutterのタッチイベント処理探訪① PointerEvent •

    Flutterのタッチイベント処理探訪② Gesture • Understanding Flutter's handling of Gestures • HitTestBehavior.opaque documentation is wrong · Issue #74733 · flutter/flutter