A cross-platform solution for playing audio in Flutter.
This project's goal is to be as simple as possible, meaning it offers the core functionality only (ex. play/pause). It also aims to be stable and relatively bug free.
I created this plugin for my music app so that I don't have to use different packages for different platforms (audio_service, dart_vlc). This made it hard to deal with bugs from different packages.
- Simple API
- Cross platform (Android, Linux, Windows, iOS, macOS)
- Playback of local and online resources
- Gapless playback and preloading
- Volume normalization
The documentation is hosted by pub.dev
. You can find it here.
- Add this plugin as a dependency in
pubspec.yaml
- Follow the setup steps.
- Call
SimpleAudio.init()
inmain()
(see below). - Instantiate a
SimpleAudio
object in your player controller (see below). - Use the APIs provided in the instantiated object (see below).
An example player project is located here.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SimpleAudio.init();
runApp(const MyApp());
}
final SimpleAudio player = SimpleAudio(shouldNormalizeVolume: false);
player.playbackState.listen((state) => print(state));
player.progressState.listen((state) => print(state));
// Autoplays by default
player.open(path);
Some platform specific things have to be set up in order for this plugin to function properly.
No setup is needed.
You will have to add a dependency to your Xcode project.
- Open
Runner.xcworkspace
in theios
folder. - At the top of your project hierarchy view, select the
Runner
project. - Select the
Runner
target, go to theGeneral
tab and scroll down until you seeFrameworks, Libraries, Embedded Content
- Press the
+
icon and add theAudioToolbox.framework
framework. SelectDo Not Embed
under theEmbed
column.
- sanihaq - Reported multiple bugs in
simple_audio
's first releases. These bugs would not have been fixed for a long time without their help.