From 1ab1f569171e2af3a6caa97b18847b95647de96d Mon Sep 17 00:00:00 2001 From: IKStreamIvo Date: Sun, 4 Mar 2018 16:20:29 +0100 Subject: [PATCH 1/2] Optional duration parameter for vibrate() I am not sure if this works for iOS, since I do not own one. --- lib/vibrate.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vibrate.dart b/lib/vibrate.dart index 30c0605..86712ee 100644 --- a/lib/vibrate.dart +++ b/lib/vibrate.dart @@ -7,7 +7,7 @@ class Vibrate { static const Duration _DEFAULT_VIBRATION_DURATION = const Duration(milliseconds: 500); //Vibrate for 500ms on Android, and for the default time on iOS (about 500ms as well) - static Future vibrate() => _channel.invokeMethod('vibrate', {"duration" : _DEFAULT_VIBRATION_DURATION.inMilliseconds}); + static Future vibrate([Duration duration = _DEFAULT_VIBRATION_DURATION]) => _channel.invokeMethod('vibrate', {"duration": duration.inMilliseconds}); //Whether the device can actually vibrate or not static Future get canVibrate => _channel.invokeMethod('canVibrate'); /** From 0083d147e5a8d860a3855a3e7e5a2451047af5b5 Mon Sep 17 00:00:00 2001 From: IKStreamIvo Date: Sun, 4 Mar 2018 16:21:29 +0100 Subject: [PATCH 2/2] Added vibration cancel() Don't know how to do it for iOS. --- .../vibrate/vibrate/VibratePlugin.java | 32 ++++++++++++------- ios/Classes/VibratePlugin.m | 4 +++ lib/vibrate.dart | 3 ++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/flutter/plugins/vibrate/vibrate/VibratePlugin.java b/android/src/main/java/flutter/plugins/vibrate/vibrate/VibratePlugin.java index 84ca3db..0fbe650 100644 --- a/android/src/main/java/flutter/plugins/vibrate/vibrate/VibratePlugin.java +++ b/android/src/main/java/flutter/plugins/vibrate/vibrate/VibratePlugin.java @@ -28,18 +28,26 @@ public static void registerWith(Registrar registrar) { @Override public void onMethodCall(MethodCall call, Result result) { - if (call.method.equals("vibrate")) { - if(_vibrator.hasVibrator()){ - int duration = call.argument("duration"); - _vibrator.vibrate(duration); - } - result.success(null); - } - else if(call.method.equals("canVibrate")){ - result.success(_vibrator.hasVibrator()); - } - else { - result.notImplemented(); + switch (call.method) { + case "vibrate": + if (_vibrator.hasVibrator()) { + int duration = call.argument("duration"); + _vibrator.vibrate(duration); + } + result.success(null); + break; + case "canVibrate": + result.success(_vibrator.hasVibrator()); + break; + case "cancel": + if (_vibrator.hasVibrator()) { + _vibrator.cancel(); + } + result.success(null); + break; + default: + result.notImplemented(); + break; } } } diff --git a/ios/Classes/VibratePlugin.m b/ios/Classes/VibratePlugin.m index 00f3f3e..74bf9a7 100644 --- a/ios/Classes/VibratePlugin.m +++ b/ios/Classes/VibratePlugin.m @@ -18,6 +18,10 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { else if ([@"canVibrate" isEqualToString:call.method]){ result([NSNumber numberWithBool:YES]); } + else if ([@"cancel" isEqualToString:call.method]){ + //TODO add cancel functionality to iOS + result(nil); + } else { result(FlutterMethodNotImplemented); } diff --git a/lib/vibrate.dart b/lib/vibrate.dart index 86712ee..64e032e 100644 --- a/lib/vibrate.dart +++ b/lib/vibrate.dart @@ -25,4 +25,7 @@ class Vibrate { } vibrate(); } + + //Cancel vibrations + static Future cancel() => _channel.invokeMethod("cancel"); }