### Platform Specific Setup Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Required setup for Android and OpenHarmony platforms. ```APIDOC ## Platform Specific Setup ### Android Add the `VIBRATE` permission to your `AndroidManifest.xml`. ```xml ``` ### OpenHarmony Add the `ohos.permission.VIBRATE` permission to your `module.json5` file. ```json "requestPermissions": [ {"name" : "ohos.permission.VIBRATE"}, ] ``` ``` -------------------------------- ### OpenHarmony Vibration Control Examples Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Demonstrates how to use the OpenHarmony-specific VibrationOhos API for fine-grained control over vibration effects and attributes. Includes examples for preset effects and time-based vibrations. Requires importing 'vibration.dart', 'vibration_ohos.dart', and 'vibration_platform_interface.dart'. ```dart import 'package:vibration/vibration.dart'; import 'package:vibration_ohos/vibration_ohos.dart'; import 'package:vibration_platform_interface/vibration_platform_interface.dart'; void ohosVibrationExamples() { // Check if running on OpenHarmony if (VibrationPlatform.instance is VibrationOhos) { final ohos = VibrationPlatform.instance as VibrationOhos; // Vibrate with preset effect and custom count ohos.vibrate( vibrateEffect: const VibratePreset( effectId: 'haptic.clock.timer', count: 5, ), vibrateAttribute: const VibrateAttribute( usage: 'alarm', ), ); // Vibrate with time-based effect ohos.vibrate( vibrateEffect: const VibrateTime(duration: 1000), vibrateAttribute: const VibrateAttribute( usage: 'notification', ), ); // Available usage types for VibrateAttribute: // 'unknown' - No specific scenario, lowest priority // 'alarm' - Alarm scenarios // 'ring' - Ringtone scenarios // 'notification' - Notification scenarios // 'communication' - Communication scenarios // 'touch' - Touch feedback scenarios // 'media' - Multimedia scenarios // 'physicalFeedback' - Physical feedback scenarios // 'simulateReality' - Reality simulation scenarios } } ``` -------------------------------- ### Complete Flutter Widget Example Source: https://context7.com/benjamindean/flutter_vibration/llms.txt A comprehensive example demonstrating vibration capabilities in a Flutter application with proper async handling and UI feedback. This widget shows how to check device capabilities and trigger various vibration types. ```dart import 'package:flutter/material.dart'; import 'package:vibration/vibration.dart'; import 'package:vibration/vibration_presets.dart'; void main() => runApp(const VibrationDemoApp()); class VibrationDemoApp extends StatelessWidget { const VibrationDemoApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('Vibration Demo')), body: const VibrationDemo(), ), ); } } class VibrationDemo extends StatefulWidget { const VibrationDemo({super.key}); @override State createState() => _VibrationDemoState(); } class _VibrationDemoState extends State { bool _hasVibrator = false; bool _hasAmplitude = false; bool _hasCustomSupport = false; @override void initState() { super.initState(); _checkCapabilities(); } Future _checkCapabilities() async { final hasVibrator = await Vibration.hasVibrator() ?? false; final hasAmplitude = await Vibration.hasAmplitudeControl() ?? false; final hasCustom = await Vibration.hasCustomVibrationsSupport() ?? false; setState(() { _hasVibrator = hasVibrator; _hasAmplitude = hasAmplitude; _hasCustomSupport = hasCustom; }); } @override Widget build(BuildContext context) { return ListView( padding: const EdgeInsets.all(16), children: [ // Capability indicators Card( child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('Device Capabilities:', style: Theme.of(context).textTheme.titleLarge), Text('Has Vibrator: $_hasVibrator'), Text('Has Amplitude Control: $_hasAmplitude'), Text('Has Custom Support: $_hasCustomSupport'), ], ), ), ), const SizedBox(height: 16), // Basic vibrations ElevatedButton( onPressed: () => Vibration.vibrate(), child: const Text('Default Vibration (500ms)'), ), ElevatedButton( onPressed: () => Vibration.vibrate(duration: 1000), child: const Text('1 Second Vibration'), ), // Pattern vibration ElevatedButton( onPressed: () => Vibration.vibrate( pattern: [500, 1000, 500, 2000, 500, 3000], ), child: const Text('Pattern Vibration'), ), // Pattern with intensities if (_hasAmplitude) ElevatedButton( onPressed: () => Vibration.vibrate( pattern: [500, 1000, 500, 2000], intensities: [0, 128, 0, 255], ), child: const Text('Pattern with Intensities'), ), // Presets const SizedBox(height: 16), Text('Presets:', style: Theme.of(context).textTheme.titleMedium), Wrap( spacing: 8, runSpacing: 8, children: VibrationPreset.values.map((preset) { return ElevatedButton( onPressed: () => Vibration.vibrate(preset: preset), child: Text(preset.name), ); }).toList(), ), // Cancel button const SizedBox(height: 16), ElevatedButton( style: ElevatedButton.styleFrom(backgroundColor: Colors.red), onPressed: () => Vibration.cancel(), child: const Text('Cancel Vibration', style: TextStyle(color: Colors.white)), ), ], ); } } ``` -------------------------------- ### Vibrate with a custom pattern Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Create a custom vibration pattern by specifying a list of durations for alternating wait and vibrate times. This example creates a pattern of 500ms wait, 1s vibrate, 500ms wait, 2s vibrate. ```dart Vibration.vibrate(pattern: [500, 1000, 500, 2000]); ``` -------------------------------- ### Add Vibration Permission to module.json5 Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration_ohos/README.md Ensure your project's module.json5 file includes the 'ohos.permission.VIBRATE' permission to enable vibration functionality. ```json "requestPermissions": [ {"name" : "ohos.permission.VIBRATE"}, ] ``` -------------------------------- ### Vibration.vibrate() with Presets Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Uses predefined vibration patterns for common use cases. Presets provide consistent haptic feedback without manually configuring patterns and intensities. When a preset is provided, it overrides other parameters. ```APIDOC ## Vibration.vibrate() - With Presets ### Description Uses predefined vibration patterns for common use cases. Presets provide consistent haptic feedback without manually configuring patterns and intensities. When a preset is provided, it overrides other parameters. ### Method `Vibration.vibrate()` ### Parameters #### Query Parameters - **preset** (VibrationPreset) - Required - The predefined vibration pattern to use. ### Request Example ```dart import 'package:vibration/vibration.dart'; import 'package:vibration/vibration_presets.dart'; void presetExamples() { // Quick feedback presets Vibration.vibrate(preset: VibrationPreset.singleShortBuzz); Vibration.vibrate(preset: VibrationPreset.doubleBuzz); Vibration.vibrate(preset: VibrationPreset.tripleBuzz); // Notification presets Vibration.vibrate(preset: VibrationPreset.gentleReminder); Vibration.vibrate(preset: VibrationPreset.quickSuccessAlert); Vibration.vibrate(preset: VibrationPreset.dramaticNotification); // Alert presets Vibration.vibrate(preset: VibrationPreset.longAlarmBuzz); Vibration.vibrate(preset: VibrationPreset.emergencyAlert); Vibration.vibrate(preset: VibrationPreset.urgentBuzzWave); Vibration.vibrate(preset: VibrationPreset.zigZagAlert); // Rhythmic presets Vibration.vibrate(preset: VibrationPreset.pulseWave); Vibration.vibrate(preset: VibrationPreset.progressiveBuzz); Vibration.vibrate(preset: VibrationPreset.rhythmicBuzz); Vibration.vibrate(preset: VibrationPreset.heartbeatVibration); // Special effect presets Vibration.vibrate(preset: VibrationPreset.softPulse); Vibration.vibrate(preset: VibrationPreset.countdownTimerAlert); Vibration.vibrate(preset: VibrationPreset.rapidTapFeedback); } ``` ### Response This method does not return a value, but triggers a vibration. ``` -------------------------------- ### Inspect Vibration Preset Configuration Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Access and print the pattern, intensities, and total duration of a specific vibration preset programmatically. Requires importing 'vibration_presets.dart'. ```dart import 'package:vibration/vibration_presets.dart'; // Available presets and their configurations: // VibrationPreset.singleShortBuzz - pattern: [0, 100], intensities: [0, 255] // VibrationPreset.doubleBuzz - pattern: [0, 100, 50, 100], intensities: [0, 255, 0, 255] // VibrationPreset.tripleBuzz - pattern: [0, 100, 50, 100, 50, 100], intensities: [0, 255, 0, 255, 0, 255] // VibrationPreset.longAlarmBuzz - pattern: [0, 500], intensities: [0, 255] // VibrationPreset.pulseWave - pattern: [0, 100, 100, 100, 100, 100], intensities: [0, 200, 0, 200, 0, 200] // VibrationPreset.progressiveBuzz - pattern: [0, 100, 200, 300, 400, 500], intensities: [0, 100, 150, 200, 255, 255] // VibrationPreset.rhythmicBuzz - pattern: [0, 200, 100, 300, 100, 200], intensities: [0, 150, 0, 255, 0, 200] // VibrationPreset.gentleReminder - pattern: [0, 50, 100, 50, 100, 50], intensities: [0, 128, 0, 128, 0, 128] // VibrationPreset.quickSuccessAlert - pattern: [0, 70, 30, 70, 30, 70], intensities: [0, 255, 0, 255, 0, 255] // VibrationPreset.zigZagAlert - pattern: [0, 100, 30, 300, 30, 100], intensities: [0, 200, 0, 255, 0, 200] // VibrationPreset.softPulse - pattern: [0, 150, 50, 150, 50, 150], intensities: [0, 100, 0, 100, 0, 100] // VibrationPreset.emergencyAlert - pattern: [0, 500, 50, 500, 50, 500], intensities: [0, 255, 0, 255, 0, 255] // VibrationPreset.heartbeatVibration - pattern: [0, 200, 100, 100, 100, 200], intensities: [0, 255, 0, 100, 0, 255] // VibrationPreset.countdownTimerAlert - pattern: [0, 100, 100, 200, 100, 300, 100, 400, 100, 500], intensities: [0, 100, 0, 150, 0, 200, 0, 255, 0, 255] // VibrationPreset.rapidTapFeedback - pattern: [0, 50, 50, 50, 50, 50, 50, 50], intensities: [0, 180, 0, 180, 0, 180, 0, 180] // VibrationPreset.dramaticNotification- pattern: [0, 100, 200, 100, 300, 100, 400], intensities: [0, 255, 0, 200, 0, 150, 0] // VibrationPreset.urgentBuzzWave - pattern: [0, 300, 50, 300, 50, 300, 50, 300], intensities: [0, 255, 0, 230, 0, 210, 0, 200] // Access preset configuration programmatically void inspectPreset() { final config = presets[VibrationPreset.heartbeatVibration]!; print('Pattern: ${config.pattern}'); print('Intensities: ${config.intensities}'); print('Total duration: ${config.pattern.reduce((a, b) => a + b)}ms'); } ``` -------------------------------- ### Import the Vibration package Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Import the Vibration package into your Dart file to use its functionalities. ```dart import 'package:vibration/vibration.dart'; ``` -------------------------------- ### Vibration.hasCustomVibrationsSupport() Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Checks if the device supports custom vibration durations, patterns, and intensities. Note that this may return `true` even if the device has no physical vibrator. Use in combination with `hasVibrator()` for complete capability detection. ```APIDOC ## Vibration.hasCustomVibrationsSupport() ### Description Checks if the device supports custom vibration durations, patterns, and intensities. ### Method GET ### Endpoint /vibration/hasCustomVibrationsSupport ### Parameters None ### Request Example None ### Response #### Success Response (200) - **hasCustomVibrationsSupport** (boolean) - `true` if the device supports custom vibrations, `false` otherwise. #### Response Example { "hasCustomVibrationsSupport": true } ``` -------------------------------- ### Add vibration_ohos to pubspec.yaml Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration_ohos/README.md Include the vibration and vibration_ohos packages in your project's pubspec.yaml file under dependencies. ```yaml dependencies: vibration: any vibration_ohos: any ``` -------------------------------- ### Add vibration to pubspec.yaml Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Add the vibration plugin as a dependency in your pubspec.yaml file. ```yaml dependencies: vibration: ^3.1.3 ``` -------------------------------- ### Vibration Presets Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Use predefined vibration patterns for common use cases. Presets provide consistent haptic feedback without manually configuring patterns and intensities. When a preset is provided, it overrides other parameters. ```dart import 'package:vibration/vibration.dart'; import 'package:vibration/vibration_presets.dart'; void presetExamples() { // Quick feedback presets Vibration.vibrate(preset: VibrationPreset.singleShortBuzz); // Brief tap Vibration.vibrate(preset: VibrationPreset.doubleBuzz); // Double tap Vibration.vibrate(preset: VibrationPreset.tripleBuzz); // Triple tap // Notification presets Vibration.vibrate(preset: VibrationPreset.gentleReminder); Vibration.vibrate(preset: VibrationPreset.quickSuccessAlert); Vibration.vibrate(preset: VibrationPreset.dramaticNotification); // Alert presets Vibration.vibrate(preset: VibrationPreset.longAlarmBuzz); Vibration.vibrate(preset: VibrationPreset.emergencyAlert); Vibration.vibrate(preset: VibrationPreset.urgentBuzzWave); Vibration.vibrate(preset: VibrationPreset.zigZagAlert); // Rhythmic presets Vibration.vibrate(preset: VibrationPreset.pulseWave); Vibration.vibrate(preset: VibrationPreset.progressiveBuzz); Vibration.vibrate(preset: VibrationPreset.rhythmicBuzz); Vibration.vibrate(preset: VibrationPreset.heartbeatVibration); // Special effect presets Vibration.vibrate(preset: VibrationPreset.softPulse); Vibration.vibrate(preset: VibrationPreset.countdownTimerAlert); Vibration.vibrate(preset: VibrationPreset.rapidTapFeedback); } ``` -------------------------------- ### Check Custom Vibration Support Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Use `Vibration.hasCustomVibrationsSupport()` to check for support of custom vibration patterns and durations. Note that this may return true even if the device lacks a physical vibrator; combine with `hasVibrator()` for full detection. ```dart import 'package:vibration/vibration.dart'; Future adaptiveVibration() async { bool? hasCustomSupport = await Vibration.hasCustomVibrationsSupport(); if (hasCustomSupport == true) { // Use custom duration and pattern await Vibration.vibrate(duration: 1000); await Vibration.vibrate(pattern: [500, 1000, 500, 2000]); } else { // Fall back to multiple short default vibrations Vibration.vibrate(); await Future.delayed(Duration(milliseconds: 500)); Vibration.vibrate(); await Future.delayed(Duration(milliseconds: 500)); Vibration.vibrate(); } } ``` -------------------------------- ### OpenHarmony VIBRATE Permission Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Add the VIBRATE permission to your OpenHarmony module configuration file to enable vibration functionality. ```json // module.json5 { "requestPermissions": [ {"name": "ohos.permission.VIBRATE"} ] } ``` -------------------------------- ### Vibration Capabilities Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Check if the device supports vibration and its specific features. ```APIDOC ## Vibration Capabilities ### hasVibrator Check if the target device has vibration capabilities. ```dart if (await Vibration.hasVibrator()) { // Device has a vibrator } ``` ### hasAmplitudeControl Check if the target device has the ability to control the vibration amplitude (Android 8.0+). ```dart if (await Vibration.hasAmplitudeControl()) { // Device supports amplitude control } ``` ### hasCustomVibrationsSupport Check if the device is able to vibrate with a custom duration, pattern, or intensity. ```dart if (await Vibration.hasCustomVibrationsSupport()) { // Device supports custom vibrations } ``` ``` -------------------------------- ### Vibration Methods Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Methods for triggering and controlling vibrations. ```APIDOC ## Vibrate ### vibrate Triggers a vibration with various customizable options. **Parameters:** - `duration` (int, optional): Duration of the vibration in milliseconds. Default is 500ms. - `pattern` (List, optional): List of integers representing the vibration pattern (wait, vibrate, wait, vibrate...). - `repeat` (int, optional): Index in the pattern to repeat from, or -1 for no repeat. Default is -1. - `intensities` (List, optional): List of integers for vibration intensities for each segment in the pattern. - `amplitude` (int, optional): Amplitude of the vibration (1-255). Default is -1 (platform default). - `sharpness` (double, optional): Sharpness of the vibration (iOS only, 0.0-1.0). Default is 0.5. - `preset` (VibrationPreset, optional): Predefined vibration preset. Overrides other parameters. **Examples:** #### With specific duration: ```dart Vibration.vibrate(duration: 1000); ``` #### With specific duration and amplitude: ```dart Vibration.vibrate(duration: 1000, amplitude: 128); ``` #### With pattern: ```dart Vibration.vibrate(pattern: [500, 1000, 500, 2000]); // Wait 500ms, vibrate 1s, wait 500ms, vibrate 2s ``` #### With pattern and varying intensities: ```dart Vibration.vibrate(pattern: [500, 1000, 500, 2000], intensities: [1, 255]); ``` #### With vibration presets: ```dart Vibration.vibrate(preset: VibrationPreset.alarm); ``` **Available Presets:** `alarm`, `notification`, `heartbeat`, `singleShortBuzz`, `doubleBuzz`, `tripleBuzz`, `longAlarmBuzz`, `pulseWave`, `progressiveBuzz`, `rhythmicBuzz`, `gentleReminder`, `quickSuccessAlert`, `zigZagAlert`, `softPulse`, `emergencyAlert`, `heartbeatVibration`, `countdownTimerAlert`, `rapidTapFeedback`, `dramaticNotification`, `urgentBuzzWave` ### cancel Stop ongoing vibration. ```dart Vibration.cancel(); ``` ``` -------------------------------- ### Vibration with Custom Patterns Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Creates vibration sequences using a pattern array, alternating between wait and vibrate durations. The first value is the initial delay. ```dart import 'package:vibration/vibration.dart'; void patternVibrationExamples() { // Pattern: wait 500ms, vibrate 1s, wait 500ms, vibrate 2s Vibration.vibrate(pattern: [500, 1000, 500, 2000]); // Notification pattern: three short bursts Vibration.vibrate(pattern: [0, 100, 100, 100, 100, 100]); // Alarm pattern: long-short-long Vibration.vibrate(pattern: [0, 500, 200, 100, 200, 500]); // Heartbeat pattern Vibration.vibrate(pattern: [0, 200, 100, 100, 500, 200, 100, 100]); // SOS pattern (... --- ...) Vibration.vibrate(pattern: [ 0, 100, 100, 100, 100, 100, // S: three short 200, // pause 300, 100, 300, 100, 300, // O: three long 200, // pause 100, 100, 100, 100, 100 // S: three short ]); } ``` -------------------------------- ### Vibrate using a preset Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Utilize predefined vibration presets for common use cases like alarms, notifications, or heartbeats. This simplifies vibration implementation for standard feedback types. ```dart Vibration.vibrate(preset: VibrationPreset.alarm); ``` -------------------------------- ### Check Device Vibration Support Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Use `Vibration.hasVibrator()` to check if the device has hardware vibration capabilities. This is useful for providing fallback mechanisms on devices without vibrators. ```dart import 'package:vibration/vibration.dart'; Future checkVibrationSupport() async { bool? hasVibrator = await Vibration.hasVibrator(); if (hasVibrator == true) { print('Device supports vibration'); Vibration.vibrate(); } else { print('Device does not have a vibrator'); // Fall back to visual or audio feedback } } ``` -------------------------------- ### Vibration.vibrate() - Basic Usage Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Triggers a vibration with the specified duration. The default duration is 500 milliseconds. This is the simplest way to provide haptic feedback in your application. ```APIDOC ## Vibration.vibrate() ### Description Triggers a vibration with the specified duration and optional amplitude or pattern. ### Method POST ### Endpoint /vibration/vibrate ### Parameters #### Query Parameters - **duration** (int) - Optional - The duration of the vibration in milliseconds. Defaults to 500ms. - **amplitude** (int) - Optional - The intensity of the vibration (0-255). Requires `hasAmplitudeControl()` to be true. - **pattern** (List) - Optional - A list of integers representing vibration intervals in milliseconds (on, off, on, off, ...). Requires `hasCustomVibrationsSupport()` to be true. ### Request Body None ### Request Example None ### Response #### Success Response (200) - **status** (string) - Indicates the success of the vibration operation. #### Response Example { "status": "vibration_triggered" } ``` -------------------------------- ### Basic Vibration Trigger Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Trigger a vibration using `Vibration.vibrate()`. The default duration is 500ms, but can be customized. ```dart import 'package:vibration/vibration.dart'; void basicVibrationExamples() { // Default vibration (500ms) Vibration.vibrate(); // Custom duration vibration (1 second) Vibration.vibrate(duration: 1000); // Short tap feedback (100ms) Vibration.vibrate(duration: 100); // Long notification vibration (2 seconds) Vibration.vibrate(duration: 2000); } ``` -------------------------------- ### Add Vibration Package to Dependencies Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Add the vibration package and its platform-specific dependencies to your Flutter project's pubspec.yaml file. ```yaml # pubspec.yaml dependencies: vibration: ^3.1.8 # For web support (auto-included via platform detection) vibration_web: ^1.6.8 # For OpenHarmony support vibration_ohos: ^0.0.4 ``` -------------------------------- ### Vibration.hasVibrator() Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Checks if the device has vibration hardware capabilities. Returns `true` if the device has a vibrator, `false` otherwise. This method is useful for gracefully handling devices without vibration support. ```APIDOC ## Vibration.hasVibrator() ### Description Checks if the device has vibration hardware capabilities. ### Method GET ### Endpoint /vibration/hasVibrator ### Parameters None ### Request Example None ### Response #### Success Response (200) - **hasVibrator** (boolean) - `true` if the device has a vibrator, `false` otherwise. #### Response Example { "hasVibrator": true } ``` -------------------------------- ### Vibration with Patterns and Intensities Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Combines vibration patterns with varying intensity levels for each segment. The intensities array must correspond to the vibration segments in the pattern. ```dart import 'package:vibration/vibration.dart'; Future patternWithIntensitiesExamples() async { if (await Vibration.hasAmplitudeControl() == true) { // Pattern with escalating intensity // wait 500ms, vibrate 1s at 128, wait 500ms, vibrate 2s at 255 Vibration.vibrate( pattern: [500, 1000, 500, 2000], intensities: [0, 128, 0, 255], ); // Fade-in effect Vibration.vibrate( pattern: [0, 200, 50, 200, 50, 200, 50, 200], intensities: [0, 64, 0, 128, 0, 192, 0, 255], ); // Pulse wave with varying strengths Vibration.vibrate( pattern: [0, 100, 100, 100, 100, 100, 100, 100], intensities: [0, 255, 0, 128, 0, 255, 0, 128], ); // Complex notification pattern Vibration.vibrate( pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500], intensities: [0, 128, 0, 255, 0, 64, 0, 255], ); } } ``` -------------------------------- ### Check for custom vibration support and vibrate Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Determine if the device supports custom vibration patterns, durations, or intensities. If not, a default vibration is used. ```dart if (await Vibration.hasCustomVibrationsSupport()) { Vibration.vibrate(duration: 1000); } else { Vibration.vibrate(); await Future.delayed(Duration(milliseconds: 500)); Vibration.vibrate(); } ``` -------------------------------- ### Vibration with Sharpness Control (iOS Only) Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Controls the sharpness of haptic feedback on iOS devices, ranging from 0.0 (soft) to 1.0 (sharp). This parameter is ignored on other platforms. Includes platform-aware usage. ```dart import 'package:vibration/vibration.dart'; import 'dart:io'; void sharpnessExamples() { // Soft, rounded haptic (like a gentle tap) Vibration.vibrate(duration: 1000, sharpness: 0.0); // Medium sharpness (default) Vibration.vibrate(duration: 1000, sharpness: 0.5); // Sharp, crisp haptic (like a click) Vibration.vibrate(duration: 1000, sharpness: 1.0); // Platform-aware sharpness usage if (Platform.isIOS) { // Use sharpness for refined iOS haptics Vibration.vibrate(duration: 500, sharpness: 0.8, amplitude: 200); } else { // Android/other platforms ignore sharpness Vibration.vibrate(duration: 500, amplitude: 200); } } ``` -------------------------------- ### Vibrate with pattern and intensities Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Define a custom vibration pattern with varying intensities for each segment. The intensities range from 1 (minimum) to 255 (maximum). ```dart Vibration.vibrate(pattern: [500, 1000, 500, 2000], intensities: [1, 255]); ``` -------------------------------- ### Trigger Vibration with VibratePreset and VibrateAttribute Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration_ohos/README.md Use the vibrateEffect and vibrateAttribute parameters when calling the vibrate method on VibrationOhos for custom vibration patterns and attributes. These parameters are specific to the VibrationOhos implementation. ```dart (VibrationPlatform.instance as VibrationOhos).vibrate( vibrateEffect: const VibratePreset(count: 100), vibrateAttribute: const VibrateAttribute( usage: 'alarm', ), ); ``` -------------------------------- ### Check for vibrator and vibrate Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Check if the device has vibration capabilities before attempting to vibrate. This is a good practice to ensure compatibility. ```dart if (await Vibration.hasVibrator()) { Vibration.vibrate(); } ``` -------------------------------- ### Check Amplitude Control Support Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Use `Vibration.hasAmplitudeControl()` to determine if the device supports custom vibration intensity. This is available on Android 8.0+ and iOS devices with CoreHaptics. ```dart import 'package:vibration/vibration.dart'; Future vibrateWithAmplitude() async { bool? hasAmplitude = await Vibration.hasAmplitudeControl(); if (hasAmplitude == true) { // Vibrate at 50% intensity (128 out of 255) await Vibration.vibrate(duration: 1000, amplitude: 128); // Vibrate at minimum intensity await Vibration.vibrate(duration: 500, amplitude: 1); // Vibrate at maximum intensity await Vibration.vibrate(duration: 500, amplitude: 255); } else { // Fall back to default vibration without amplitude control await Vibration.vibrate(duration: 1000); } } ``` -------------------------------- ### Android VIBRATE permission Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Declare the VIBRATE permission in your AndroidManifest.xml file to allow the app to use the device's vibrator. ```xml ``` -------------------------------- ### Vibration.hasAmplitudeControl() Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Checks if the device supports amplitude (intensity) control for vibrations. This feature was introduced in Android 8.0 Oreo and returns `false` for all earlier API levels. On iOS, amplitude control is available on devices with CoreHaptics support. ```APIDOC ## Vibration.hasAmplitudeControl() ### Description Checks if the device supports amplitude (intensity) control for vibrations. ### Method GET ### Endpoint /vibration/hasAmplitudeControl ### Parameters None ### Request Example None ### Response #### Success Response (200) - **hasAmplitudeControl** (boolean) - `true` if the device supports amplitude control, `false` otherwise. #### Response Example { "hasAmplitudeControl": true } ``` -------------------------------- ### Check for amplitude control and vibrate Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Check if the device supports amplitude control, typically available on Android 8.0 (Oreo) and above. If supported, you can specify a vibration amplitude. ```dart if (await Vibration.hasAmplitudeControl()) { Vibration.vibrate(amplitude: 128); } ``` -------------------------------- ### Android VIBRATE Permission Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Declare the VIBRATE permission in your Android manifest file to allow the app to trigger device vibrations. ```xml ``` -------------------------------- ### Vibrate with specific duration Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Trigger a vibration for a specified duration in milliseconds. The default duration is 500ms. ```dart Vibration.vibrate(duration: 1000); ``` -------------------------------- ### Vibration with Amplitude Control Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Triggers vibrations with specific durations and amplitude levels. Amplitude ranges from 1 (minimum) to 255 (maximum). Check for amplitude support before use. ```dart import 'package:vibration/vibration.dart'; Future amplitudeVibrationExamples() async { // Check for amplitude support first if (await Vibration.hasAmplitudeControl() == true) { // Gentle vibration at 25% intensity Vibration.vibrate(duration: 500, amplitude: 64); // Medium vibration at 50% intensity Vibration.vibrate(duration: 500, amplitude: 128); // Strong vibration at 75% intensity Vibration.vibrate(duration: 500, amplitude: 192); // Maximum intensity vibration Vibration.vibrate(duration: 500, amplitude: 255); } } ``` -------------------------------- ### Vibrate with duration and amplitude Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Vibrate for a specific duration and amplitude, provided the device supports amplitude control. ```dart Vibration.vibrate(duration: 1000, amplitude: 128); ``` -------------------------------- ### Vibrate with Custom Effects on Ohos Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Utilize VibrationOhos to apply custom vibration effects and attributes, such as alarms. Ensure the VibrationOhos class is cast correctly. ```dart (VibrationPlatform.instance as VibrationOhos).vibrate( vibrateEffect: const VibratePreset(count: 100), vibrateAttribute: const VibrateAttribute( usage: 'alarm', ), ); ``` -------------------------------- ### Vibration.cancel() Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Stops any ongoing vibration. On iOS, this only works for custom haptic vibrations using CHHapticEngine. Useful for canceling long-running vibration patterns or implementing user controls. ```APIDOC ## Vibration.cancel() ### Description Stops any ongoing vibration. On iOS, this only works for custom haptic vibrations using CHHapticEngine. Useful for canceling long-running vibration patterns or implementing user controls. ### Method `Vibration.cancel()` ### Endpoint N/A (This is a static method call) ### Parameters This method does not accept any parameters. ### Request Example ```dart import 'package:vibration/vibration.dart'; Future cancelVibrationExample() async { // Start a long vibration Vibration.vibrate(duration: 10000); // 10 seconds // Cancel after 2 seconds await Future.delayed(Duration(seconds: 2)); Vibration.cancel(); print('Vibration cancelled'); } // User-controlled vibration with cancel button class VibrationController { bool _isVibrating = false; void startVibration() { _isVibrating = true; Vibration.vibrate(pattern: [0, 500, 200, 500, 200, 500, 200, 500]); } void stopVibration() { if (_isVibrating) { Vibration.cancel(); _isVibrating = false; } } } ``` ### Response This method does not return a value, but stops any active vibration. ``` -------------------------------- ### Cancel ongoing vibration Source: https://github.com/benjamindean/flutter_vibration/blob/master/vibration/README.md Stop any currently active vibration immediately. This is useful for interrupting feedback or in response to user actions. ```dart Vibration.cancel(); ``` -------------------------------- ### Cancel Ongoing Vibration Source: https://context7.com/benjamindean/flutter_vibration/llms.txt Stops any ongoing vibration. On iOS, this only works for custom haptic vibrations using CHHapticEngine. Useful for canceling long-running vibration patterns or implementing user controls. ```dart import 'package:vibration/vibration.dart'; Future cancelVibrationExample() async { // Start a long vibration Vibration.vibrate(duration: 10000); // 10 seconds // Cancel after 2 seconds await Future.delayed(Duration(seconds: 2)); Vibration.cancel(); print('Vibration cancelled'); } ``` ```dart // User-controlled vibration with cancel button class VibrationController { bool _isVibrating = false; void startVibration() { _isVibrating = true; Vibration.vibrate(pattern: [0, 500, 200, 500, 200, 500, 200, 500]); } void stopVibration() { if (_isVibrating) { Vibration.cancel(); _isVibrating = false; } } } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.