waveform method

  1. @override
Future<VibrationResult> waveform({
  1. required List<Duration> pattern,
  2. List<int>? amplitudes,
  3. required int repeat,
  4. required VibrationUsage usage,
})
override

Triggers a pattern/waveform vibration with optional amplitudes and repeat.

Implementation

@override
Future<VibrationResult> waveform({
  required List<Duration> pattern,
  List<int>? amplitudes,
  required int repeat,
  required VibrationUsage usage,
}) async {
  try {
    final patternMs = pattern.map((e) => e.inMilliseconds).toList();
    final res = await methodChannel
        .invokeMapMethod<String, dynamic>('waveform', <String, dynamic>{
      'pattern': patternMs,
      'amplitudes': amplitudes,
      'repeat': repeat,
      'usage': usage.name,
    });
    if (res != null) {
      return VibrationResult.fromMap(res);
    }
  } on PlatformException catch (e) {
    return VibrationResult(
      status: VibrationStatus.platformError,
      message: e.message ?? e.details?.toString(),
    );
  } catch (e) {
    return VibrationResult(
      status: VibrationStatus.platformError,
      message: e.toString(),
    );
  }
  return const VibrationResult(
    status: VibrationStatus.platformError,
    message: 'Empty response from platform',
  );
}