flutter_oneshot_player 0.0.4
flutter_oneshot_player: ^0.0.4 copied to clipboard
Low-latency one-shot audio sample player for Flutter. Native AVAudioEngine on iOS/macOS, Oboe on Android.
flutter_oneshot_player #
Low-latency one-shot audio sample player for Flutter. Native AVAudioEngine on iOS/macOS, Oboe on Android.
Load samples by key and fire them on demand. Calling play while a sample is already playing retriggers it from the beginning with no click or gap.
Platforms #
| Platform | Implementation |
|---|---|
| iOS | AVAudioEngine |
| macOS | AVAudioEngine |
| Android | Oboe |
Usage #
final player = OneShotPlayer();
await player.initialize();
await player.prime(); // warms up the hardware audio session
await player.load('kick', bytes: kickBytes, extension: 'wav');
await player.load('snare', path: '/path/to/snare.wav');
// Standard play (awaitable)
await player.play('kick');
// Ultra-low-latency fire-and-forget (zero Dart allocations)
player.playFast('kick');
await player.dispose();
API #
| Method | Description |
|---|---|
initialize() |
Initialises the native audio engine. Call before anything else. |
prime() |
Plays 50 ms of silence to warm up the hardware session. Eliminates first-hit latency. |
load(key, {path, bytes, extension}) |
Loads a sample. Provide either a file path or raw bytes. |
play(key) |
Fires the sample. Retriggers if already playing. |
playFast(key) |
Lowest-latency variant — sends pre-encoded bytes directly via the binary messenger. |
stop(key) |
Stops the sample immediately. |
setVolume(double) |
Sets master output volume (0.0–1.0). |
unload(key) |
Removes a sample and frees its buffer. |
dispose() |
Stops all samples and releases all native resources. |
Streams #
| Stream | Description |
|---|---|
playingKeys |
Emits the set of currently-playing sample keys. |
errors |
Emits engine-level error messages. |