Skip to content

Meloplay is a local music player app that plays music from your device built with Flutter.

License

Notifications You must be signed in to change notification settings

ShokhrukhbekYuldoshev/Meloplay

Repository files navigation

🎵 Meloplay

Meloplay is a local music player app that plays music from your device built with Flutter.

📱 Platforms

  • Android
  • iOS (not tested)

✨ Features

  • Play music from your device
  • Background audio
  • Notification controls
  • Lock screen controls
  • Play, pause, skip, previous, seek
  • Shuffle and repeat
  • Search for music, artists, albums, genres
  • Sort by (title, artist, album, duration, date, size, etc)
  • Order by (ascending, descending)
  • Playlists (Read, create, rename, delete, add songs, remove songs)
  • Queue (List, add songs, remove songs, change order)
  • Favorites (Add songs, remove songs)
  • Recently played
  • Most played
  • Artists
  • Albums
  • Genres
  • Lyrics
  • Equalizer
  • Sleep timer
  • Share music
  • Settings
  • Themes (multiple themes)
  • Localization

📸 Screenshots

Splash Songs Player
Splash Songs Player
Playlists Artists Albums
Playlists Artists Albums
Genres Drawer Themes
Genres Drawer Themes
Artist Album Genre
Artist Album Genre
Search Settings Scan
Search Settings Scan

📚 Dependencies

Name Version Description
bloc 8.1.4 A predictable state management library
flutter_bloc 8.1.6 Flutter Widgets that make it easy to implement BLoC design patterns
flutter_staggered_animations 1.1.1 A plugin for adding staggered animations to your Flutter apps
fluttertoast 8.2.8 Flutter plugin for displaying toast messages.
flutter_cache_manager 3.4.1 A Flutter plugin for caching images and other resources.
flutter_svg 2.0.13 Flutter plugin for displaying SVG images.
get_it 8.0.2 Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App
hive 2.2.3 A lightweight and blazing fast key-value database
hive_flutter 1.1.0 Hive database implementation for Flutter
just_audio 0.9.42 A feature-rich audio player for Flutter
just_audio_background 0.0.1-beta.13 A plugin for playing audio in the background on Android and iOS.
lottie 3.1.3 Lottie is a mobile library for Android and iOS that parses Lottie and JSON-based animations and renders them natively on mobile.
marquee 2.3.0 A Flutter widget that scrolls text infinitely.
on_audio_query 2.9.0 A Flutter plugin to query songs on Android and iOS
package_info_plus 8.1.0 Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
permission_handler 11.3.1 A Flutter plugin for permission handling. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
rxdart 0.28.0 RxDart is an implementation of the popular reactiveX api for asynchronous programming, leveraging the native Dart Streams API.
share_plus 10.1.1 Flutter plugin for sharing content via the platform share UI, using the ACTION_SEND intent on Android and UIActivityViewController on iOS.
url_launcher 6.3.1 A Flutter plugin for launching a URL in the mobile platform.

📦 Installation

Prerequisites

  • Flutter
  • Android Studio / Xcode

Setup

  1. Clone the repo

    git clone
  2. Install dependencies

    dart pub get
  3. Run the app

    flutter run

❗ Permissions

Android

<!-- url_launcher -->
<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="https" />
    </intent>
</queries>

<!-- !DANGER! Delete, update songs/playlists -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

<!-- Android 12 or below  -->
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="29"
/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!-- Android 13 or greater  -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

<!-- Audio service -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

iOS

<!-- url_launcher -->
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>https</string>
</array>
<key>NSAppleMusicUsageDescription</key>
<string>$(PROJECT_NAME) requires access to media library</string>
<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

🤝 Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

📝 License

Distributed under the Attribution-NonCommercial-ShareAlike 4.0 International License. See LICENSE for more information.

📧 Contact

🌟 Show your support

Give a ⭐️ if you like this project!