NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A Flutter package for playing audio files. Ideal for games or applications with sound.
Last release 27 days ago
11 Sep 2026
Ships unpredictably
gaps range from 8 days to 2.3 years
Nearly every release is documented
notes for 11 of 12 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
12 releases · first in 2022
One column per quarter.
4.2.0 — canales de background con crossfade
4.2.0 — canales de background con crossfade
flutter_soloud
mixing bus per channel (native master volume + fades). New API:
createChannel({channelId, volume}) — idempotent; re-creating updates volume.playChannel({channelId, playerId, transitionDuration}) — instant switch with
Duration.zero, crossfade otherwise. The Future completes once the transition
is safely started, not after the full fade. Rapid changes (A→B→C, A→B→A) resolve
to a single surviving track with no orphan voices.stopChannel({channelId, fadeOutDuration}) — fades tracks out; channel stays reusable.pauseChannel / resumeChannel — compose with the automatic
background/foreground pause (a channel resumes only when no pause reason remains).setChannelVolume({channelId, volume}) — master volume without cancelling fades.activePlayerIdInChannel, isChannelPlaying, isChannelPaused — queries.stop, stopBackground(playerId:),
setVol and isPlaying now also reach voices playing inside channels, so the same
playerId can play both as a plain background and inside a channel simultaneously.
Recaching a playerId that is active in a channel is rejected (returns false).0..1, negative
duration) throw ArgumentError; engine/operational errors return false.fix: liberar el motor de audio en detached para evitar crash FFI en a…
fix: liberar el motor de audio en detached para evitar crash FFI en a…
AppLifecycleState.detached. The engine is a native (C++) singleton that outlives the Dart isolate within the same process (e.g. Android re-creating the Activity without killing the process). Previously the engine kept its FFI NativeCallable listeners pointing at the destroyed isolate, so a later native voiceEnded/stateChanged aborted the VM with SIGABRT "Callback invoked after it has been deleted" on the next cold start. The observer now calls SoLoud.deinit() on detached (which disposes the native callables). Only on detached, never on paused (that would silence audio when minimizing or showing an ad). No API changes.New (non-breaking): load audio from a local file on the device filesystem via createNewAudioCache(..., source: AudioInAppSource.file), passing an abso
createNewAudioCache(..., source: AudioInAppSource.file), passing an absolute path as route. Files are loaded with SoLoud.loadFile under the hood, while assets keep using SoLoud.loadAsset. Added the AudioInAppSource { asset, file } enum; source defaults to AudioInAppSource.asset.bool isPlaying(String playerId) returns whether the last started voice (determined or background) is still sounding, so you can detect when a one-shot sound has finished.source keep loading from assets exactly as before.BREAKING (engine): Replaced the internal audioplayers engine with flutter_soloud (SoLoud C++ engine via FFI). The public Dart API of AudioInApp is unc
audioplayers engine with flutter_soloud (SoLoud C++ engine via FFI). The public Dart API of AudioInApp is unchanged — no call sites need to be updated — but the platform setup requirements below make this a major release.>=3.41.0 and Dart to >=3.11.0 (required by flutter_soloud).flutter_soloud scripts to your web/index.html (see README).libasound2-dev on Debian/Ubuntu).determined) effects now overlap when retriggered (each play creates a new voice), instead of restarting. Background audio keeps a single looping voice per id.AudioContext/audio-focus workaround — no longer needed with SoLoud.Removed debug logging that was accidentally shipped in 3.1.0. No functional changes.
Fixed: background music was silent on iOS. The release mode is now set before the iOS priming step; with the default release mode, the priming stop()
stop() released the player's source and the later resume() produced no sound.AudioContext with AndroidAudioFocus.none is now configured so effects and music coexist.Removed deprecated _ambiguate helper
audioCacheMap getter (use cachedPlayerIds instead)universal_io dependency (replaced with flutter/foundation.dart for web compatibility)_ambiguate helper* Error correction
Updated the "audioplayers" version to 5.2.0
Updated the "audioplayers" version to 5.2.0
Nothing published for this version
Load the audio to be able to use it later
Your coding agent can read these notes before it upgrades. Set up the MCP server →