Creating a Flutter music player app tutorial with Audio Playback and Carousel Slider: A Detailed Tutorial

In this tutorial, we’ll guide you through building a Flutter music player app using the audioplayers and carousel_slider packages. This app will play music tracks, display cover art, and include features like play, pause, next, and previous functionality. Let’s dive into the details!

Flutter music player app tutorial

Prerequisites

To get started, ensure you have Flutter installed and a basic understanding of Dart. Add the following dependencies in your pubspec.yaml file:

dependencies:  
flutter:
sdk: flutter
audioplayers: ^0.20.1
carousel_slider: ^4.1.1

Run flutter pub get to install the packages.

App Overview

We’ll create:

  1. A music list with URLs.
  2. Cover art for each track.
  3. A carousel slider for artwork.
  4. Audio control buttons (play, pause, next, previous).

Step 1: Setting Up the Main App Structure

Here’s the main entry point for our app:

import 'package:audioplayers/audioplayers.dart';  
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Music Player',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: MusicPlayerApp(),
);
}
}

Step 2: Creating the Music List and UI

This MusicPlayerApp displays a list of tracks:

class MusicPlayerApp extends StatelessWidget {  
final List<String> _musicList = [
"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3",
"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-3.mp3",
];

final List<String> _coverArtList = [
"https://cdn.pixabay.com/photo/2020/05/19/13/48/cartoon-5190942_960_720.jpg",
"https://cdn.pixabay.com/photo/2020/05/19/13/35/cartoon-5190860_960_720.jpg",
"https://cdn.pixabay.com/photo/2020/10/23/17/52/fox-5679446_960_720.png",
];

@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: _musicList.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
leading: Image.network(_coverArtList[index]),
title: Text('Track ${index + 1}'),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MusicPlayerScreen(
musicList: _musicList,
coverArtistList: _coverArtList,
initialIndex: index,
),
),
);
},
),
);
},
),
);
}
}

Step 3: Building the Music Player Screen

Here’s the MusicPlayerScreen widget that plays the selected track:

class MusicPlayerScreen extends StatefulWidget {  
final List<String> musicList;
final List<String> coverArtistList;
final int initialIndex;

const MusicPlayerScreen({
super.key,
required this.musicList,
required this.coverArtistList,
required this.initialIndex,
});

@override
_MusicPlayerScreenState createState() => _MusicPlayerScreenState();
}

class _MusicPlayerScreenState extends State<MusicPlayerScreen> {
late AudioPlayer _audioPlayer;
bool _isPlaying = false;

@override
void initState() {
super.initState();
_audioPlayer = AudioPlayer();
_play(widget.musicList[widget.initialIndex]);
}

void _play(String url) async {
await _audioPlayer.play(UrlSource(url));
setState(() { _isPlaying = true; });
}

void _pause() async {
await _audioPlayer.pause();
setState(() { _isPlaying = false; });
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Now Playing'),
IconButton(
icon: Icon(_isPlaying ? Icons.pause : Icons.play_arrow),
onPressed: _isPlaying ? _pause : () => _play(widget.musicList[0]),
),
],
),
),
);
}
}

Key Features Explained

  1. Audio Playback: audioplayers handles playing, pausing, and stopping audio tracks.
  2. Carousel Slider: Displays cover art with smooth transitions.
  3. UI Customization: Cards for track selection with cover images.

Conclusion

This Flutter Music Player App Tutorial guides you through creating a sleek, interactive music player with smooth audio control and cover art display. Experiment with styles and features to enhance your app further.

Explore Other Flutter Topics…

  1. Introduction to Flutter and Dart
  2. Why choose Flutter
  3. Installing Flutter On Your Windows Mac And Linux System
  4. Your first Flutter app
  5. Flutter project structure
  6. Building blocks of Flutter
  7. Stateful vs. Stateless Widgets Explained
  8. Flutter layout system
  9. Flutter text widget
  10. Creating Buttons in Flutter: ElevatedButton, TextButton, and IconButton
  11. Handling User Input with Flutter Forms
  12. Container class in Flutter
  13. Flutter Navigation
  14. Flutter – Pass Data One Screen To Another Screen
  15. Managing Device Orientation in Flutter
  16. Stateful widget lifecycle in Flutter
  17. Future of Flutter
  18. Flutter Themes
  19. Flutter Animations
  20. Flutter AppBar Customization
  21. ListView in Flutter
  22. Flutter GridView
  23. Flutter Expanded Widget
  24. Flutter BottomNavigation Bar
  25. Floating Action Button
  26. Drawer Widgets in Flutter
  27. Form Validation in Flutter
  28. Flutter TextField
  29. Adding AdMob ads to a Flutter app
  30. Building Flutter Web & Desktop Applications
  31. What is Async and Await in Flutter
  32. HTTP requests in Flutter
  33. Parsing JSON in Flutter
  34. Tinder-Style Swipe Cards in Flutter
  35. Flutter Tic Tac Toe Game Tutorial
  36. Flutter Login UI Tutorial
  37. Flutter Card Widget Tutorial
  38. Flutter music player app tutorial
  39. Flutter introduction screens
  40. Shared Preferences in Flutter
  41. SQLite Database in Flutter
  42. Firebase Authentication in Flutter
  43. Firebase Firestore in Flutter
  44. Push Notifications in Flutter
  45. Handling File Uploads in Flutter
  46. Responsive Design in Flutter
  47. Provider in Flutter
  48. Riverpod in Flutter
  49. Flutter BLoC Pattern Tutorial

Leave a Reply

Your email address will not be published. Required fields are marked *