Commit 426ce937 authored by Adam Barth's avatar Adam Barth

Clean up some style in GestureDetector

 * Rename GestureTapListener (and friends) To GestureTapCallback to match the
   other gesture callbacks.
 * Replace "ensureFoo" pattern with ??= operator.
parent e9aabcd5
...@@ -37,13 +37,13 @@ class StockRow extends StatelessComponent { ...@@ -37,13 +37,13 @@ class StockRow extends StatelessComponent {
static const double kHeight = 79.0; static const double kHeight = 79.0;
GestureTapListener _getTapHandler(StockRowActionCallback callback) { GestureTapCallback _getTapHandler(StockRowActionCallback callback) {
if (callback == null) if (callback == null)
return null; return null;
return () => callback(stock, key, arrowKey, symbolKey, priceKey); return () => callback(stock, key, arrowKey, symbolKey, priceKey);
} }
GestureLongPressListener _getLongPressHandler(StockRowActionCallback callback) { GestureLongPressCallback _getLongPressHandler(StockRowActionCallback callback) {
if (callback == null) if (callback == null)
return null; return null;
return () => callback(stock, key, arrowKey, symbolKey, priceKey); return () => callback(stock, key, arrowKey, symbolKey, priceKey);
......
...@@ -9,13 +9,13 @@ import 'package:sky/src/gestures/constants.dart'; ...@@ -9,13 +9,13 @@ import 'package:sky/src/gestures/constants.dart';
import 'package:sky/src/gestures/pointer_router.dart'; import 'package:sky/src/gestures/pointer_router.dart';
import 'package:sky/src/gestures/recognizer.dart'; import 'package:sky/src/gestures/recognizer.dart';
typedef void GestureLongPressListener(); typedef void GestureLongPressCallback();
class LongPressGestureRecognizer extends PrimaryPointerGestureRecognizer { class LongPressGestureRecognizer extends PrimaryPointerGestureRecognizer {
LongPressGestureRecognizer({ PointerRouter router, this.onLongPress }) LongPressGestureRecognizer({ PointerRouter router, this.onLongPress })
: super(router: router, deadline: kTapTimeout + kLongPressTimeout); : super(router: router, deadline: kTapTimeout + kLongPressTimeout);
GestureLongPressListener onLongPress; GestureLongPressCallback onLongPress;
void didExceedDeadline() { void didExceedDeadline() {
resolve(GestureDisposition.accepted); resolve(GestureDisposition.accepted);
......
...@@ -8,13 +8,13 @@ import 'package:sky/src/gestures/arena.dart'; ...@@ -8,13 +8,13 @@ import 'package:sky/src/gestures/arena.dart';
import 'package:sky/src/gestures/constants.dart'; import 'package:sky/src/gestures/constants.dart';
import 'package:sky/src/gestures/recognizer.dart'; import 'package:sky/src/gestures/recognizer.dart';
typedef void GestureShowPressListener(); typedef void GestureShowPressCallback();
class ShowPressGestureRecognizer extends PrimaryPointerGestureRecognizer { class ShowPressGestureRecognizer extends PrimaryPointerGestureRecognizer {
ShowPressGestureRecognizer({ PointerRouter router, this.onShowPress }) ShowPressGestureRecognizer({ PointerRouter router, this.onShowPress })
: super(router: router, deadline: kTapTimeout); : super(router: router, deadline: kTapTimeout);
GestureShowPressListener onShowPress; GestureShowPressCallback onShowPress;
void didExceedDeadline() { void didExceedDeadline() {
// Show press isn't an exclusive gesture. We can recognize a show press // Show press isn't an exclusive gesture. We can recognize a show press
......
...@@ -7,13 +7,13 @@ import 'dart:sky' as sky; ...@@ -7,13 +7,13 @@ import 'dart:sky' as sky;
import 'package:sky/src/gestures/arena.dart'; import 'package:sky/src/gestures/arena.dart';
import 'package:sky/src/gestures/recognizer.dart'; import 'package:sky/src/gestures/recognizer.dart';
typedef void GestureTapListener(); typedef void GestureTapCallback();
class TapGestureRecognizer extends PrimaryPointerGestureRecognizer { class TapGestureRecognizer extends PrimaryPointerGestureRecognizer {
TapGestureRecognizer({ PointerRouter router, this.onTap }) TapGestureRecognizer({ PointerRouter router, this.onTap })
: super(router: router); : super(router: router);
GestureTapListener onTap; GestureTapCallback onTap;
void handlePrimaryPointer(sky.PointerEvent event) { void handlePrimaryPointer(sky.PointerEvent event) {
if (event.type == 'pointerup') { if (event.type == 'pointerup') {
......
...@@ -21,7 +21,7 @@ class DrawerItem extends StatefulComponent { ...@@ -21,7 +21,7 @@ class DrawerItem extends StatefulComponent {
final String icon; final String icon;
final Widget child; final Widget child;
final GestureTapListener onPressed; final GestureTapCallback onPressed;
final bool selected; final bool selected;
DrawerItemState createState() => new DrawerItemState(); DrawerItemState createState() => new DrawerItemState();
......
...@@ -26,7 +26,7 @@ class FloatingActionButton extends StatefulComponent { ...@@ -26,7 +26,7 @@ class FloatingActionButton extends StatefulComponent {
final Widget child; final Widget child;
final Color backgroundColor; final Color backgroundColor;
final GestureTapListener onPressed; final GestureTapCallback onPressed;
FloatingActionButtonState createState() => new FloatingActionButtonState(); FloatingActionButtonState createState() => new FloatingActionButtonState();
} }
......
...@@ -31,9 +31,10 @@ class GestureDetector extends StatefulComponent { ...@@ -31,9 +31,10 @@ class GestureDetector extends StatefulComponent {
}) : super(key: key); }) : super(key: key);
final Widget child; final Widget child;
final GestureTapListener onTap;
final GestureShowPressListener onShowPress; final GestureTapCallback onTap;
final GestureLongPressListener onLongPress; final GestureShowPressCallback onShowPress;
final GestureLongPressCallback onLongPress;
final GestureDragStartCallback onVerticalDragStart; final GestureDragStartCallback onVerticalDragStart;
final GestureDragUpdateCallback onVerticalDragUpdate; final GestureDragUpdateCallback onVerticalDragUpdate;
...@@ -55,62 +56,23 @@ class GestureDetector extends StatefulComponent { ...@@ -55,62 +56,23 @@ class GestureDetector extends StatefulComponent {
} }
class GestureDetectorState extends State<GestureDetector> { class GestureDetectorState extends State<GestureDetector> {
void initState() {
super.initState();
didUpdateConfig(null);
}
final PointerRouter _router = FlutterBinding.instance.pointerRouter; final PointerRouter _router = FlutterBinding.instance.pointerRouter;
TapGestureRecognizer _tap; TapGestureRecognizer _tap;
TapGestureRecognizer _ensureTap() {
if (_tap == null)
_tap = new TapGestureRecognizer(router: _router);
return _tap;
}
ShowPressGestureRecognizer _showPress; ShowPressGestureRecognizer _showPress;
ShowPressGestureRecognizer _ensureShowPress() {
if (_showPress == null)
_showPress = new ShowPressGestureRecognizer(router: _router);
return _showPress;
}
LongPressGestureRecognizer _longPress; LongPressGestureRecognizer _longPress;
LongPressGestureRecognizer _ensureLongPress() {
if (_longPress == null)
_longPress = new LongPressGestureRecognizer(router: _router);
return _longPress;
}
VerticalDragGestureRecognizer _verticalDrag; VerticalDragGestureRecognizer _verticalDrag;
VerticalDragGestureRecognizer _ensureVerticalDrag() {
if (_verticalDrag == null)
_verticalDrag = new VerticalDragGestureRecognizer(router: _router);
return _verticalDrag;
}
HorizontalDragGestureRecognizer _horizontalDrag; HorizontalDragGestureRecognizer _horizontalDrag;
HorizontalDragGestureRecognizer _ensureHorizontalDrag() {
if (_horizontalDrag == null)
_horizontalDrag = new HorizontalDragGestureRecognizer(router: _router);
return _horizontalDrag;
}
PanGestureRecognizer _pan; PanGestureRecognizer _pan;
PanGestureRecognizer _ensurePan() { ScaleGestureRecognizer _scale;
assert(_scale == null); // Scale is a superset of pan; just use scale
if (_pan == null) void initState() {
_pan = new PanGestureRecognizer(router: _router); super.initState();
return _pan; _syncAll();
} }
ScaleGestureRecognizer _scale; void didUpdateConfig(GestureDetector oldConfig) {
ScaleGestureRecognizer _ensureScale() { _syncAll();
assert(_pan == null); // Scale is a superset of pan; just use scale
if (_scale == null)
_scale = new ScaleGestureRecognizer(router: _router);
return _scale;
} }
void dispose() { void dispose() {
...@@ -124,7 +86,7 @@ class GestureDetectorState extends State<GestureDetector> { ...@@ -124,7 +86,7 @@ class GestureDetectorState extends State<GestureDetector> {
super.dispose(); super.dispose();
} }
void didUpdateConfig(GestureDetector oldConfig) { void _syncAll() {
_syncTap(); _syncTap();
_syncShowPress(); _syncShowPress();
_syncLongPress(); _syncLongPress();
...@@ -135,31 +97,37 @@ class GestureDetectorState extends State<GestureDetector> { ...@@ -135,31 +97,37 @@ class GestureDetectorState extends State<GestureDetector> {
} }
void _syncTap() { void _syncTap() {
if (config.onTap == null) if (config.onTap == null) {
_tap = _ensureDisposed(_tap); _tap = _ensureDisposed(_tap);
else } else {
_ensureTap().onTap = config.onTap; _tap ??= new TapGestureRecognizer(router: _router)
..onTap = config.onTap;
}
} }
void _syncShowPress() { void _syncShowPress() {
if (config.onShowPress == null) if (config.onShowPress == null) {
_showPress = _ensureDisposed(_showPress); _showPress = _ensureDisposed(_showPress);
else } else {
_ensureShowPress().onShowPress = config.onShowPress; _showPress ??= new ShowPressGestureRecognizer(router: _router)
..onShowPress = config.onShowPress;
}
} }
void _syncLongPress() { void _syncLongPress() {
if (config.onLongPress == null) if (config.onLongPress == null) {
_longPress = _ensureDisposed(_longPress); _longPress = _ensureDisposed(_longPress);
else } else {
_ensureLongPress().onLongPress = config.onLongPress; _longPress ??= new LongPressGestureRecognizer(router: _router)
..onLongPress = config.onLongPress;
}
} }
void _syncVerticalDrag() { void _syncVerticalDrag() {
if (config.onVerticalDragStart == null && config.onVerticalDragUpdate == null && config.onVerticalDragEnd == null) { if (config.onVerticalDragStart == null && config.onVerticalDragUpdate == null && config.onVerticalDragEnd == null) {
_verticalDrag = _ensureDisposed(_verticalDrag); _verticalDrag = _ensureDisposed(_verticalDrag);
} else { } else {
_ensureVerticalDrag() _verticalDrag ??= new VerticalDragGestureRecognizer(router: _router)
..onStart = config.onVerticalDragStart ..onStart = config.onVerticalDragStart
..onUpdate = config.onVerticalDragUpdate ..onUpdate = config.onVerticalDragUpdate
..onEnd = config.onVerticalDragEnd; ..onEnd = config.onVerticalDragEnd;
...@@ -170,7 +138,7 @@ class GestureDetectorState extends State<GestureDetector> { ...@@ -170,7 +138,7 @@ class GestureDetectorState extends State<GestureDetector> {
if (config.onHorizontalDragStart == null && config.onHorizontalDragUpdate == null && config.onHorizontalDragEnd == null) { if (config.onHorizontalDragStart == null && config.onHorizontalDragUpdate == null && config.onHorizontalDragEnd == null) {
_horizontalDrag = _ensureDisposed(_horizontalDrag); _horizontalDrag = _ensureDisposed(_horizontalDrag);
} else { } else {
_ensureHorizontalDrag() _horizontalDrag ??= new HorizontalDragGestureRecognizer(router: _router)
..onStart = config.onHorizontalDragStart ..onStart = config.onHorizontalDragStart
..onUpdate = config.onHorizontalDragUpdate ..onUpdate = config.onHorizontalDragUpdate
..onEnd = config.onHorizontalDragEnd; ..onEnd = config.onHorizontalDragEnd;
...@@ -181,7 +149,8 @@ class GestureDetectorState extends State<GestureDetector> { ...@@ -181,7 +149,8 @@ class GestureDetectorState extends State<GestureDetector> {
if (config.onPanStart == null && config.onPanUpdate == null && config.onPanEnd == null) { if (config.onPanStart == null && config.onPanUpdate == null && config.onPanEnd == null) {
_pan = _ensureDisposed(_pan); _pan = _ensureDisposed(_pan);
} else { } else {
_ensurePan() assert(_scale == null); // Scale is a superset of pan; just use scale
_pan ??= new PanGestureRecognizer(router: _router)
..onStart = config.onPanStart ..onStart = config.onPanStart
..onUpdate = config.onPanUpdate ..onUpdate = config.onPanUpdate
..onEnd = config.onPanEnd; ..onEnd = config.onPanEnd;
...@@ -192,7 +161,8 @@ class GestureDetectorState extends State<GestureDetector> { ...@@ -192,7 +161,8 @@ class GestureDetectorState extends State<GestureDetector> {
if (config.onScaleStart == null && config.onScaleUpdate == null && config.onScaleEnd == null) { if (config.onScaleStart == null && config.onScaleUpdate == null && config.onScaleEnd == null) {
_scale = _ensureDisposed(_scale); _scale = _ensureDisposed(_scale);
} else { } else {
_ensureScale() assert(_pan == null); // Scale is a superset of pan; just use scale
_scale ??= new ScaleGestureRecognizer(router: _router)
..onStart = config.onScaleStart ..onStart = config.onScaleStart
..onUpdate = config.onScaleUpdate ..onUpdate = config.onScaleUpdate
..onEnd = config.onScaleEnd; ..onEnd = config.onScaleEnd;
......
...@@ -127,5 +127,6 @@ class RenderInkWell extends RenderProxyBox { ...@@ -127,5 +127,6 @@ class RenderInkWell extends RenderProxyBox {
class InkWell extends OneChildRenderObjectWidget { class InkWell extends OneChildRenderObjectWidget {
InkWell({ Key key, Widget child }) : super(key: key, child: child); InkWell({ Key key, Widget child }) : super(key: key, child: child);
RenderInkWell createRenderObject() => new RenderInkWell(); RenderInkWell createRenderObject() => new RenderInkWell();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment