### 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.