FLUTTER ECOSYSTEM

ShokhrukhbekYuldoshev/Meloplay

A sleek local music player for Android built with Flutter

Meloplay project cover
Stars
76
Forks
29
Last push (UTC)
May 25, 2026
Project status
Active
Shokh GitHub avatar
GITHUB User

Shokh ↗

SWE, Mobile developer

Samarkand, Uzbekistan
LanguagesDartHTMLKotlin

Technical topics

Related packages and examples

Dependencies used

Dependency list 28 items

App categories

Original README

English project snapshot. Visit GitHub for the latest content.

Expand / collapse project README

Meloplay

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

Platforms

  • Android only

Features

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

Screenshots

Songs Player Playlists
Songs Player Playlists
Artists Albums Genres
Artists Albums Genres
Settings Scan Themes
Settings Scan Themes

Dependencies

Name Description
auto_size_text Flutter widget that automatically resizes text to fit perfectly within its bounds.
bloc A predictable state management library.
flutter_bloc Flutter widgets that make it easy to implement BLoC design patterns.
flutter_cache_manager A Flutter plugin for caching images and other resources.
flutter_staggered_animations A plugin for adding staggered animations to your Flutter apps.
flutter_svg Flutter plugin for displaying SVG images.
fluttertoast Flutter plugin for displaying toast messages.
get_it Simple Service Locator for dependency injection.
hive A lightweight and blazing fast key-value database.
hive_flutter Hive database implementation for Flutter.
just_audio A feature-rich audio player for Flutter.
just_audio_background Plugin for playing audio in the background on Android and iOS.
lottie Library for rendering JSON-based Lottie animations natively.
marquee A Flutter widget that scrolls text infinitely.
on_audio_query A Flutter plugin to query songs on Android and iOS.
package_info_plus Plugin for querying information about the application package.
permission_handler Cross-platform permission handling plugin.
share_plus Plugin for sharing content via the platform share UI.
url_launcher Plugin for launching URLs on mobile platforms.
liquid_glass_renderer A Flutter plugin for rendering liquid glass effects.
device_info_plus Plugin for getting device information.

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

Inside AndroidManifest.xml we have the following permissions:

<!-- ADD xmlns:tools="http://schemas.android.com/tools" to the "manifest" element -->
<manifest xmlns:tools="http://schemas.android.com/tools" ...>
    <!-- url_launcher -->
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
    </queries>

    <!-- Android 12 and below -->
    <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="32" />

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

    <!-- ADD THESE TWO PERMISSIONS -->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <!-- ALSO ADD THIS PERMISSION IF TARGETING SDK 34 -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>

    <application ...>

    ...

    <!-- EDIT THE android:name ATTRIBUTE IN YOUR EXISTING "ACTIVITY" ELEMENT -->
    <activity android:name="com.ryanheise.audioservice.AudioServiceActivity" ...>
      ...
    </activity>

    <!-- ADD THIS "SERVICE" element -->
    <service android:name="com.ryanheise.audioservice.AudioService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="true" tools:ignore="Instantiatable">
      <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService" />
      </intent-filter>
    </service>

    <!-- ADD THIS "RECEIVER" element -->
    <receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver"
        android:exported="true" tools:ignore="Instantiatable">
      <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
      </intent-filter>
    </receiver>
  </application>
</manifest>

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

  • [Email](mailto:shokh.xyz@gmail.com)
  • GitHub

Show your support

Give a star if you like this project!