From 81fcadc21dea0b3777c74ae86e029fb33486aea1 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Fri, 14 Aug 2015 12:46:04 -0700 Subject: [PATCH] Add haptic and aural feedback service And use the service in mine_digger to notify the user when they flag a bomb. --- .../examples/mine_digger/lib/main.dart | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/engine/src/flutter/examples/mine_digger/lib/main.dart b/engine/src/flutter/examples/mine_digger/lib/main.dart index 35a8665185..f839a18b27 100644 --- a/engine/src/flutter/examples/mine_digger/lib/main.dart +++ b/engine/src/flutter/examples/mine_digger/lib/main.dart @@ -4,6 +4,7 @@ import 'dart:sky' as sky; import 'dart:math'; +import 'package:sky/mojo/activity.dart' as activity; import 'package:sky/painting/text_style.dart'; import 'package:sky/rendering/flex.dart'; import 'package:sky/theme/colors.dart' as colors; @@ -83,36 +84,16 @@ class MineDiggerApp extends App { assert(false); } - Stopwatch longPressStopwatch; - PointerEventListener _pointerDownHandlerFor(int posX, int posY) { return (sky.PointerEvent event) { if (event.buttons == 1) { probe(posX, posY); } else if (event.buttons == 2) { flag(posX, posY); - } else { - // Touch event. - longPressStopwatch = new Stopwatch()..start(); } }; } - PointerEventListener _pointerUpHandlerFor(int posX, int posY) { - return (sky.PointerEvent event) { - if (longPressStopwatch == null) - return; - // Pointer down was a touch event. - if (longPressStopwatch.elapsedMilliseconds < 250) { - probe(posX, posY); - } else { - // Long press flags. - flag(posX, posY); - } - longPressStopwatch = null; - }; - } - Widget buildBoard() { bool hasCoveredCell = false; List flexRows = []; @@ -128,7 +109,13 @@ class MineDiggerApp extends App { if (state == CellState.covered) { row.add(new Listener( onPointerDown: _pointerDownHandlerFor(ix, iy), - onPointerUp: _pointerUpHandlerFor(ix, iy), + onGestureTap: (_) { + probe(ix, iy); + }, + onGestureLongPress: (_) { + activity.userFeedback.performHapticFeedback(activity.HapticFeedbackType_LONG_PRESS); + flag(ix, iy); + }, child: new CoveredMineNode( flagged: false, posX: ix,