flutter_music_player 0.0.1 copy "flutter_music_player: ^0.0.1" to clipboard
flutter_music_player: ^0.0.1 copied to clipboard

A Flutter package to create a customizable music player application or module with ease

FlutterMusicPlayer #

A Flutter package to create a customizable music player application or module with ease

Main Components #

  • AudioPlayerProvider
  • MinimizedMusicPlayer
  • MaximizedMusicPlayer

AudioPlayerProvider #

The provider which manages the state of the player and contains all the necessary music player functionalities and features such as Play/Pause, skipNext, SkipPrevious, Shuffle, etc...

Add the AudioPlayerProvider() as one of the providers in your main.dart file

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (context) => AudioPlayerProvider())
      ],
      child: MaterialApp(
        title: 'MusicPlayer Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(),
        debugShowCheckedModeBanner: false,
      ),
    );
  }
}
copied to clipboard

The AudioPlayerProvider extracts the dominant color of the album cover by default, but it can be disabled by providing the extractAlbumCoverDominantColor parameter inside its constructor. You can also provide a custom albumCoverPlaceHolder in order to display a default image when the currently playing audio tracks does not contain an album cover inside its metadata.

When the play button for a song is tapped, the method setAudioSource or setSingleAudioSource has to be called

List<AudioTrack> playlist = [];
 AudioTrack song = AudioTrack(1,
        title: 'TheSongTitle',
        artist: 'TheArtist',
        duration: Duration.zero,
        
        filePath: 'TheFilePath'
     // or
        networkUrl: 'TheFileUrl'
     // either filePath or networkUrl have to be provided
 );
 
playlist.add(song);

audioPlayerProvider.setAudioSource(playlist, 0);
// the second argument is the index of the song (inside the playlist)
// that is wished to be played

// for playing a single track, use : 
audioPlayerProvider.setSingleAudioSource(song);

audioPlayerProvider.playSong();
copied to clipboard

MinimizedMusicPlayer #

The Minimized Player which when is tapped, opens the maximized player

          MinimizedMusicPlayer(
            onTab: () => Navigator.of(context).push(TheMaximizedPlayerRoute),
            color: audioPlayerProvider.dominantColor,
            nextButton: IconButton(
              onPressed: audioPlayerProvider.next,
              icon: const Icon(
                Icons.skip_next,
                color: Colors.white,
              ),
            ),
            progressBarBackgroundColor: Colors.white10,
            progressBarColor: Colors.white,
          )

copied to clipboard

The code above will result in this widget

MaximizedMusicPlayer #

In order to customize the layout of the maximized music player, provision of a MusicPlayerCustomizer is necessary. The MusicPlayerCustomizer is an abstract class which has two implementations:

  • NamedPlayerCustomizer: uses name based parameters
  • DefaultPlayerCustomizer: uses column row based parameters

You can learn about the parameters by taking a look at this image guide which demonstrates the parameters and their positioning

    MaximizedMusicPlayer(
      playerCustomizer: NamedPlayerCustomizer(
        songTitleRowRight: FavoriteButton(),
        midRowFarLeft: QueueButton(),
        midRowFarRight: ShuffleButton(),
        midRowRight: RepeatButton(),
      ),
      backgroundDecoration: BoxDecoration(
        gradient: LinearGradient(
          begin: Alignment.topLeft,
          end: const Alignment(1, 1),
          colors: <Color>[
            audioPlayerProvider.dominantColor,
            const Color.fromRGBO(32, 32, 32, 1)
          ],
          tileMode: TileMode.decal,
        ),
      ),
    )
copied to clipboard
2
likes
60
points
25
downloads

Publisher

unverified uploader

Weekly Downloads

2024.10.04 - 2025.04.18

A Flutter package to create a customizable music player application or module with ease

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

audioplayers, flutter, flutter_media_metadata, marquee, palette_generator, plugin_platform_interface, provider

More

Packages that depend on flutter_music_player