diff --git a/packages/flutter/lib/src/gestures/arena.dart b/packages/flutter/lib/src/gestures/arena.dart index 184a314ac2a..6cfba91e718 100644 --- a/packages/flutter/lib/src/gestures/arena.dart +++ b/packages/flutter/lib/src/gestures/arena.dart @@ -21,6 +21,11 @@ abstract class GestureArenaMember { /// Called when this member loses the arena for the given key. void rejectGesture(Object key); + + /// Release any resources used by the object. Called when the object is no + /// longer needed (e.g. a gesture recogniser is being unregistered from a + /// [GestureDetector]). + void dispose() { } } /// An interface to information to an arena diff --git a/packages/flutter/lib/src/gestures/recognizer.dart b/packages/flutter/lib/src/gestures/recognizer.dart index f2a84985d39..aaa71962eed 100644 --- a/packages/flutter/lib/src/gestures/recognizer.dart +++ b/packages/flutter/lib/src/gestures/recognizer.dart @@ -12,11 +12,7 @@ import 'pointer_router.dart'; export 'pointer_router.dart' show PointerRouter; -abstract class DisposableArenaMember extends GestureArenaMember { - void dispose(); -} - -abstract class GestureRecognizer extends DisposableArenaMember { +abstract class GestureRecognizer extends GestureArenaMember { GestureRecognizer({ PointerRouter router }) : _router = router { assert(_router != null); } diff --git a/packages/flutter/lib/src/gestures/tap.dart b/packages/flutter/lib/src/gestures/tap.dart index a28155faf3a..a32884802f4 100644 --- a/packages/flutter/lib/src/gestures/tap.dart +++ b/packages/flutter/lib/src/gestures/tap.dart @@ -182,7 +182,7 @@ class _TapGesture extends _TapTracker { /// independently. That is, each pointer sequence that could resolve to a tap /// does so independently of others: down-1, down-2, up-1, up-2 produces two /// taps, on up-1 and up-2. -class MultiTapGestureRecognizer extends DisposableArenaMember { +class MultiTapGestureRecognizer extends GestureArenaMember { MultiTapGestureRecognizer({ this.router, this.onTapDown, @@ -243,7 +243,7 @@ class MultiTapGestureRecognizer extends DisposableArenaMember { } -class DoubleTapGestureRecognizer extends DisposableArenaMember { +class DoubleTapGestureRecognizer extends GestureArenaMember { DoubleTapGestureRecognizer({ this.router, this.onDoubleTap }); diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart index 5ac26e579ab..e50014dbdf2 100644 --- a/packages/flutter/lib/src/widgets/gesture_detector.dart +++ b/packages/flutter/lib/src/widgets/gesture_detector.dart @@ -217,7 +217,7 @@ class _GestureDetectorState extends State { } } - DisposableArenaMember _ensureDisposed(DisposableArenaMember recognizer) { + GestureArenaMember _ensureDisposed(GestureArenaMember recognizer) { recognizer?.dispose(); return null; }