update flutter_vibrate
This commit is contained in:
@@ -4,34 +4,60 @@ import 'src/messages.g.dart';
|
||||
|
||||
export 'src/messages.g.dart' show VibrateApi;
|
||||
|
||||
/// A set of feedback types that can be used to provide haptic feedback.
|
||||
enum FeedbackType {
|
||||
/// Indicates a task has completed successfully.
|
||||
success,
|
||||
|
||||
/// Indicates a task has failed or an error occurred.
|
||||
error,
|
||||
|
||||
/// Indicates a warning or caution.
|
||||
warning,
|
||||
|
||||
/// Indicates a selection change (e.g., scrolling through a list).
|
||||
selection,
|
||||
|
||||
/// Provides a heavy physical impact.
|
||||
impact,
|
||||
|
||||
/// Provides a heavy vibration.
|
||||
heavy,
|
||||
|
||||
/// Provides a medium vibration.
|
||||
medium,
|
||||
|
||||
/// Provides a light vibration.
|
||||
light,
|
||||
}
|
||||
|
||||
/// A class that provides access to the device's vibration hardware.
|
||||
class Vibrate {
|
||||
static final VibrateApi _api = VibrateApi();
|
||||
static const Duration _defaultVibrationDuration = Duration(milliseconds: 500);
|
||||
|
||||
/// Vibrate for 500ms on Android, and for the default time on iOS (about 500ms as well)
|
||||
/// Vibrates the device for 500ms on Android, and for the default system vibration duration on iOS.
|
||||
static Future<void> vibrate() async {
|
||||
await _api.vibrate(500);
|
||||
}
|
||||
|
||||
/// Whether the device can actually vibrate or not
|
||||
/// Checks if the device has vibration hardware.
|
||||
///
|
||||
/// Returns `true` if the device can vibrate, `false` otherwise.
|
||||
static Future<bool> get canVibrate async {
|
||||
return _api.canVibrate();
|
||||
}
|
||||
|
||||
/// Vibrates with [pauses] in between each vibration
|
||||
/// Will always vibrate once before the first pause
|
||||
/// and once after the last pause
|
||||
/// Vibrates the device with a specific pattern of pauses.
|
||||
///
|
||||
/// The [pauses] iterable defines the duration of silence in between vibrations.
|
||||
/// The pattern will always start with a vibration, followed by the first pause,
|
||||
/// then another vibration, and so on, ending with a final vibration.
|
||||
///
|
||||
/// For example, if [pauses] is `[Duration(seconds: 1)]`, the device will:
|
||||
/// 1. Vibrate (default duration)
|
||||
/// 2. Wait for 1 second
|
||||
/// 3. Vibrate (default duration)
|
||||
static Future<void> vibrateWithPauses(Iterable<Duration> pauses) async {
|
||||
for (final Duration d in pauses) {
|
||||
await vibrate();
|
||||
@@ -44,6 +70,10 @@ class Vibrate {
|
||||
await vibrate();
|
||||
}
|
||||
|
||||
/// Provides haptic feedback corresponding to the specified [type].
|
||||
///
|
||||
/// This uses the platform's native haptic feedback mechanisms (e.g., `UINotificationFeedbackGenerator` on iOS,
|
||||
/// `View.performHapticFeedback` on Android).
|
||||
static Future<void> feedback(FeedbackType type) async {
|
||||
switch (type) {
|
||||
case FeedbackType.impact:
|
||||
|
||||
@@ -15,7 +15,6 @@ PlatformException _createConnectionError(String channelName) {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
class _PigeonCodec extends StandardMessageCodec {
|
||||
const _PigeonCodec();
|
||||
@override
|
||||
@@ -41,9 +40,13 @@ class VibrateApi {
|
||||
/// Constructor for [VibrateApi]. The [binaryMessenger] named argument is
|
||||
/// available for dependency injection. If it is left null, the default
|
||||
/// BinaryMessenger will be used which routes to the host platform.
|
||||
VibrateApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''})
|
||||
: pigeonVar_binaryMessenger = binaryMessenger,
|
||||
pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '';
|
||||
VibrateApi({
|
||||
BinaryMessenger? binaryMessenger,
|
||||
String messageChannelSuffix = '',
|
||||
}) : pigeonVar_binaryMessenger = binaryMessenger,
|
||||
pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty
|
||||
? '.$messageChannelSuffix'
|
||||
: '';
|
||||
final BinaryMessenger? pigeonVar_binaryMessenger;
|
||||
|
||||
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
|
||||
@@ -51,7 +54,8 @@ class VibrateApi {
|
||||
final String pigeonVar_messageChannelSuffix;
|
||||
|
||||
Future<bool> canVibrate() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.canVibrate$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.canVibrate$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -78,13 +82,16 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> vibrate(int duration) async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.vibrate$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.vibrate$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
binaryMessenger: pigeonVar_binaryMessenger,
|
||||
);
|
||||
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[duration]);
|
||||
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(
|
||||
<Object?>[duration],
|
||||
);
|
||||
final pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
||||
if (pigeonVar_replyList == null) {
|
||||
throw _createConnectionError(pigeonVar_channelName);
|
||||
@@ -100,7 +107,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> impact() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.impact$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.impact$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -122,7 +130,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> selection() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.selection$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.selection$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -144,7 +153,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> success() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.success$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.success$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -166,7 +176,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> warning() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.warning$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.warning$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -188,7 +199,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> error() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.error$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.error$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -210,7 +222,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> heavy() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.heavy$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.heavy$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -232,7 +245,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> medium() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.medium$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.medium$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
@@ -254,7 +268,8 @@ class VibrateApi {
|
||||
}
|
||||
|
||||
Future<void> light() async {
|
||||
final pigeonVar_channelName = 'dev.flutter.pigeon.flutter_vibrate.VibrateApi.light$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channelName =
|
||||
'dev.flutter.pigeon.flutter_vibrate.VibrateApi.light$pigeonVar_messageChannelSuffix';
|
||||
final pigeonVar_channel = BasicMessageChannel<Object?>(
|
||||
pigeonVar_channelName,
|
||||
pigeonChannelCodec,
|
||||
|
||||
Reference in New Issue
Block a user