AdaptiveHaptics allows you to define a single AdaptivePreset that behaves differently on iOS and Android. This is useful for using native system presets on one platform while using custom PatternData on another.
createAdaptiveHaptics is asynchronous because it pre-parses pattern-based configurations to ensure zero-latency playback. Call dispose() when the instance is no longer needed.
Configuration Types
AdaptivePresetCallback: Invokes a callback on play(). Best for triggering native/built-in presets (e.g., pulsar.presets.systemNotificationSuccess()).AdaptivePresetPattern: Plays a specific PatternData on each play() call.
Example
final adaptivePreset = AdaptivePreset(
ios: AdaptivePresetCallback(() => pulsar.presets.systemNotificationSuccess()),
android: AdaptivePresetPattern(
PatternData(
continuousPattern: const ContinuousPattern(amplitude: [], frequency: []),
discretePattern: const [
DiscretePoint(time: 0, amplitude: 1, frequency: 0.5),
DiscretePoint(time: 150, amplitude: 0.6, frequency: 0.4),
],
),
),
);
final haptics = await pulsar.createAdaptiveHaptics(adaptivePreset);
await haptics.play();
import 'package:pulsar_haptics/pulsar.dart';
final pulsar = Pulsar();
final adaptivePreset = AdaptivePreset(
ios: AdaptivePresetCallback(() => pulsar.presets.systemNotificationSuccess()),
android: AdaptivePresetPattern(
PatternData(
continuousPattern: const ContinuousPattern(
amplitude: [],
frequency: [],
),
discretePattern: const [
DiscretePoint(time: 0, amplitude: 1, frequency: 0.5),
DiscretePoint(time: 150, amplitude: 0.6, frequency: 0.4),
],
),
),
);
final haptics = await pulsar.createAdaptiveHaptics(adaptivePreset);
await haptics.play();