Flow is a clean, modern offline music player for Android built with Flutter. It offers a smooth listening experience with synced lyrics, customizable themes, and smart playlist management.
Download the latest release APKs directly from the GitHub Releases page:
app-arm64-v8a-release.apk: Recommended for modern 64-bit Android smartphones.app-armeabi-v7a-release.apk: For older 32-bit Android devices.app-x86_64-release.apk: For Android emulators and x86_64 architecture.
-
Local Audio Scanning & Deduplication: Queries audio files from scoped device storage with strict file path deduplication (
seenPaths.add(song.data)), filtering out MediaStore ghost entries. - Smart Playlists Engine: Dynamically aggregates tracks into Favourites, Recently Added, Last Played, Most Played, and Forgotten Gems lists based on play statistics and recency.
- Custom User Playlists: Create, rename, and manage custom playlists. Batch add multiple songs using Hold-to-Select (Multi-Select) mode. Personalize playlists with custom gallery artwork.
-
Background Playback & Clean Task Cleanup: OS-level backgrounding service with lock screen media controls. Automatically terminates background service and cleans up notifications when swiped away from recent task history (
stopWithTask="true"). -
Adaptive Aesthetics: Spotify-like dynamic background color extraction from album art using
palette_generator, painting rich linear gradients. - Custom Player Background Styles & Real-Time Wallpaper Editor: Four Now Playing rendering modes: Dynamic Gradient, Apple Blurred Cover (glassmorphic overlay with hardware acceleration), AMOLED Deep Black, and Custom Gallery Image. Includes a real-time wallpaper editor to adjust blur (0-60) and dim (0-90%).
- Global 3-Choice Theme Modes: Support for Dark Mode, Light Mode, and Custom Theme Mode with dynamic or gallery wallpapers and live mockup previews.
- Dynamic Theme Accent Customization: Accent selector with 9 presets (Spotify Green, Apple Red, Deep Purple, Tidal Cyan, Sunset Orange, Sakura Pink, Luxury Gold, Sapphire Blue, Electric Lime) or Dynamic (Artwork) color matching.
-
Interactive Lyrics Engine: Synced LRC & plain text lyrics up to 3 wrapped lines (
maxLines: 3). Features Automatic Instrumental Melody Detection (3-Dots Wave) for intros, instrumental solos/bridges ($\ge 8\text{s}$ ), and outros without cutting off active vocals. -
Audio Ringtone Trimmer & Cutter: Dedicated ringtone editor with dual-handle slider duration selection, real-time slice preview, and 1-tap saving to
/Ringtones/. - Playback Speed & Pitch Controls: Smooth tempo adjustment (0.5x - 2.0x) with optional Pitch Lock, optimized with clean DSP routing to eliminate audio crackling.
- Auto-Play on Headset Connect: Automatically resumes music playback when headphones or Bluetooth audio devices are connected.
- Library Layout Density Selector: Customizable track list density (Standard vs Compact) to fit up to 25% more songs on screen.
- Multi-Language (i18n) Support: Complete internationalization across English, Indonesian, and Japanese, automatically matching system locale or manual selection.
- HSL Contrast Safety (Auto-Brightener): Real-time mathematical luminance safety interceptor that boosts dark extracted cover art colors into readable pastels/neons.
- ValueNotifier Real-Time State Sync: Continuous visual color stream coupling that propagates theme modifications instantly across all UI controls.
- Built-in Image Cropper: Integrated 1:1 and 9:16 aspect ratio image cropping for editing custom album covers and portrait player backgrounds.
- Multi-Select Batch Actions: Intuitive "Hold to Select" mode across all song lists for rapid queueing or mass additions to playlists.
- Dynamic Sleep Timer: Automatically stop audio playback with built-in presets (15m, 30m, 60m) or custom inputs, complete with soft volume fade-out.
- Precision Audio Transitions: Custom Crossfade adjustments (0ms to 3000ms) with a 150ms fade-in/fade-out playing transition.
- Auto Regex Cleaner & Virtual Metadata Editor: Native RegExp title cleaner and virtual metadata editor for song titles, artists, and albums.
-
Dynamic Durations & Equalizers: Formatted track durations next to song lists, transforming into live-animated
MiniMusicVisualizerequalizers when actively playing. -
Pixel-Perfect Margin Alignment: Custom spatial translations (
Transform.translate) aligning song controls at a precise24pxhorizontal screen margin. - Robust Cache Manager: Ultra-fast artwork preloading engine with multi-tier retries and anti-null failure mechanisms.
- YouTube Music (InnerTube) Integration: Integrated online music search and audio streaming powered by
youtube_explode_dart. Search tracks dynamically from YouTube Music directly within the Songs tab. - Dedicated Online Playlists Tab & Trending Community Playlists: Added a dedicated Online Playlists tab displaying top YouTube Music community playlists (Billboard Top 100, Pop Music Hits, Top Songs, etc.) with up to 300 tracks per playlist (
limit=300), horizontal scrolling carousel of 140x140px square artwork cards, Create Playlist, Import Playlist URL, and Online Smart Playlists (Favourites, Last Played, Most Played). - InnerTube WEB_REMIX Playlist Import Engine: Integrated YouTube Music InnerTube WEB*REMIX
browseId: 'VL$plId'playlist scraper (fetchOnlinePlaylistDetails). Correctly extracts original YouTube playlist titles (e.g. *"galau inggris"_), real track durations via_parseDurationStringToMs(fixing0 secheader duration &00:00track item bugs), and 100% real track lists, automatically saving imported playlists underMy Playlistspersistently in local storage across app restarts. - Redesigned Artists Tab & Played Online Artists Engine: Transformed the Artists tab with a Grid View vs List View layout switcher, Top Artists horizontal carousel, 360° Circular Artist Avatars, and Played Online Artists Engine (Top Artists, All Artists, and Artist Detail Views all strictly evaluate played online songs from
_onlineHistoryTracks). - Redesigned Albums Tab & Played Online Albums Engine: Transformed the Albums tab with a Grid View vs List View layout switcher, Top Albums horizontal carousel, 2-column Album Grid view, Modern Album List view, and Played Online Albums Engine (Top Albums, All Albums, and Album Detail Views all strictly evaluate played online songs from
_onlineHistoryTracks). - 60FPS UI Performance & Pill-Tap Scoped Entrance Animations: Replaced nested O(N*M) track scans in Artists & Albums tabs with O(1) Map lookups (
artistTracksMap,albumTracksMap), eliminating scroll micro-lag. Scoped_FadeInSlideUpstagger animations strictly to pill tab taps, preventing repetitive page re-animations during left/right swipe gestures. - Official Online Album Metadata Enrichment Engine: Replaced playlist title album defaults with
'Single', and added on-the-fly iTunes API metadata enrichment in_playTrackto dynamically replace generic online album names with 100% real official album titles (Head in the Clouds II, Positions, etc.) in real time. - Online Stream Buffer Protection Engine (Fix Online Skipping): Increased stream buffer threshold to 512KB and added real completion duration validation (
currentPos >= trackDuration - 4s). Eliminates premature cache EOF stream skipping (A ➔ B ➔ C), ensuring Online Song B plays smoothly to completion before moving to Song C. - Repeat One Most Played & History Removal Engine: Reset
_lastIncrementedTrackIdwhen tracks loop back to00:00so Repeat One mode increments_playCountson every loop. Filtered Remove from History so it only appears on tracks actually present in history, and automatically stops playback (stop()) if the active song is removed from history. - Dynamic 3 Mini Card Overlapping Artwork Stack: Updated
_buildStackedArtworkinmain_ui_components.dartso all playlists with tracks (1, 2, or 3+ songs) dynamically render sleek 3-stacked mini card overlapping artwork covers instead of displaying a placeholder icon when under 4 tracks. - Online Audio Stream Timestamp Reset Engine: Resolved online track skipping bug (where Song A completing caused Song B's timestamp to remain at the end and skip straight to Song C). Added instant position reset (
seek(Duration.zero)) before async network stream URL resolution, guaranteeing every next online track starts playing cleanly from00:00. - Persistent 0ms Online Playlists & Tracks Caching Engine: Online trending playlists (
yt_online_trending_cache) and track lists (yt_online_playlist_tracks_cache) are now cached persistently on disk. Entering Flow loads trending playlists instantly (0ms latency), and tapping any previously opened or imported playlist opens detail view IMMEDIATELY without showing loading spinners. - Unified Local & Online Audio Auto-Advance Engine: Synchronized UI state updates (
_playingTrack&_currentIndex) on localConcatenatingAudioSourcesequence changes so artwork, title, and lyrics update in 100% real-time sync with audio playback, while enabling uninterrupted auto-advance (_playNext()) for online track queues upon track completion. - 540x540 HD Artwork Upgrade & Smooth Performance Engine: Upgraded online thumbnail resolutions from low-res 60x60 ("burik") to crystal-clear 540x540 HD resolution (
=w540-h540), and added targetcacheWidthdecoding toImage.networkin_buildTrackArtworkfor 60fps buttery smooth playlist scrolling. - Title + Artist History Deduplication: Added case-insensitive Title + Artist matching to
saveOnlineTrackToHistoryand_onlineHistoryTracks.removeWhere, preventing duplicate songs in Recently Played when playing tracks from different sources. - Glassmorphic 2-Column Action Cards: Redesigned Create & Import Playlist buttons into sleek 2-column glassmorphic gradient action cards (New Playlist & Import URL) with vibrant accent borders, circular icon badges, and tap feedback.
- Pill Tab Entrance Animation: Added
ValueKeytab switching entrance triggers for the Online Playlists tab, smoothly playing the_FadeInSlideUpanimation every time the user taps the Playlists pill tab. - Persistent Online Favourites & Most Played Engine (
yt_online_favorites): Liking online tracks (❤️) persistently saves them to local storage underyt_online_favoritesacross app launches. The Online Most Played smart playlist ranks online tracks strictly by play count frequency (_playCountsdescending). - Unified Standard Flow Detail View for Online Playlists: Tapping any online playlist (Trending Playlists, Online Favourites, Last Played, Most Played, or Custom Online Playlists) opens the full Standard Flow Detail View complete with a 300x300 artwork header (or 4-grid collage), curator details, track count, total duration, Play All, Shuffle, and full song list.
- Smart iTunes API Fallback & 100 Songs Fetching (
limit=100): Guarantees 100% successful track fetching by fallback querying the iTunes Song Search API when YouTube playlist endpoints return empty or restricted lists. Fetches up to 100 full tracks with high-resolution 600x600 HD album artwork. - On-Demand YouTube Video Stream Resolver (
(0) Source ErrorFix): Resolved Android ExoPlayer(0) Source errorduring online playlist playback by dynamically resolving non-standard track IDs to official 11-character YouTube video streams (yt.search.searchContent) on-demand when playing tracks. - Locked Most Played Sorting: Fixed Most Played sorting across both Local and Online modes by locking track order strictly to
_playCountsdescending and protecting it against generic detail view re-sorting overrides, ensuring top played songs (e.g., 11 plays) are locked at Rank #1. - Strict 4-Cover Playlist Artwork Threshold: Enforced a strict 4-track threshold (
tracks.length >= 4) for stacked artwork collages in playlist cards. Playlists with fewer than 4 tracks maintain clean fallback circle icons (Fire icon for Most Played, History icon for Last Played, etc.). - Clean Un-underlined Loading Dialog: Wrapped modal loading overlays with
Material(type: MaterialType.transparency)andTextDecoration.none, eliminating Flutter default yellow underline artifacts under loading text. - Disk-Buffered Streaming Architecture & Auto Cache Pruning: Resolved Android ExoPlayer
(0) Source errorand YouTube CDN HTTP 403 Forbidden blocks by implementing Dart-native background disk buffering (InnerTubeService.getAudioStreamFilePath). Audio streams buffer initial data into temporary storage (yt_videoId.m4a) for instant 0ms playback on repeats, with an automatic cache pruner (_pruneAudioCacheIfNeeded) that caps temporary audio storage at 50 tracks to guarantee zero storage bloat. - Accurate 32x32 Downsampled Dynamic Color Extraction: Implemented ultra-fast 100% accurate visual color extraction (
_updateDominantColor) for online tracks using 32x32 px downsampled network images (ResizeImage(NetworkImage(...), width: 32, height: 32)). Reduces pixel processing overhead from 1,000,000 to just 1,024 pixels (<1ms CPU time), extracting 100% true visual colors (Cyan, Red, Blue) asynchronously in a background microtask with zero UI tap latency. - Channel Authority Priority Scoring System: Intelligent search ranking engine (
_getChannelPriorityScore) that scores YouTube search candidates by channel authority. Official- Topicrecord label uploads (+100 pts) and verified Official Artist / VEVO channels (+80 pts) automatically receive Rank #1 priority over generic fan re-upload channels. - YouTube Music Home Page Layout Engine: Redesigned the Online Songs tab homepage layout. When search query is empty, displays 4 structured sections:
Quick picks: Recommended top tracks with 52x52px rounded artwork, track title, artist • duration metadata, options menu, aPlay allpill button, and an expandableLoad more/Show lessbutton.Recently Played: Horizontal scrolling carousel of 130x130px square artwork cards with play icon overlays for active tracks and 3-dots context menu options for online tracks persisted inyt_online_history.Similar to [Favorite Artist]: Dynamic recommendation carousel powered byfetchSimilarArtistTracksfor the user's most listened artist.Recommended Artists: Horizontal scrolling carousel of 75x75px Circular Avatar Cards for top artists, allowing 1-tap artist search exploration.
- Clean Uncluttered Horizontal Artwork Cards & Smart Active State Overlay: Removed static play icon overlays on inactive horizontal artwork cards (Recently Played, Similar to Artist), rendering pure 130x130px album art. Actively playing cards dynamically present a semi-transparent dark circle with interactive Play/Pause (▶/⏸) controls, bold accent text styling, and 1-tap playback toggling.
- Single-Track Playback Scoping for Recommendation Carousels: Optimized carousel item tap handlers in recommendation sections to queue strictly the selected single track (
sourceList: [track]), keeping the Up Next queue focused and preventing unexpected carousel queue auto-advancements. - Far-Right Aligned Options Menu: Fine-tuned Quick Picks list item padding (
right: 0), perfectly aligning 3-dots action buttons (⋮) flush to the right edge with top header controls. - Real-Time 0ms Recently Played State Update: Automatically updates
_onlineHistoryTracksand pushes newly played online tracks to the top of the Recently Played carousel in real time (0ms) without requiring page reloads or tab switches. - Accurate Duration Unit Formatting: Fixed duration calculations in
_buildOnlineQuickPickItemby passing milliseconds (Duration(milliseconds: track.duration)), displaying precise track durations (e.g.,3:45,4:12). - Interactive 3-Dots & Long-Press Card Options: Integrated top-right 3-dots overlay buttons and long-press gestures on horizontal artwork cards to trigger the track options context menu (Download, Remove from History, Add to Playlist, Sleep Timer).
- Dynamic Online Pill Label ("Home") & Fade-In Transition: Automatically switches the first tab pill label to
Homewhen in Online mode and animates the homepage view with a smooth_FadeInSlideUptransition. - Fast Non-Blocking Load & 3.5s Timeout Safety: Optimized initial online content loading to render Quick Picks and Recently Played immediately while fetching similar artist recommendations asynchronously, with a 3.5-second timeout guard preventing infinite loading states.
- Instant Memory Caching (0ms Load Delay): Implemented
_isOnlineContentLoadedmemory caching for online home sections. Switching betweenLocalandOnlinemodes, navigating tabs, or clearing search query instantly restores the home view in 0ms with zero loading spinners or redundant network re-fetches. - Race-Free Search Request Guarding: Integrated
_onlineSearchRequestIdsession token tracking across all online search methods (_triggerOnlineSearch,_loadOnlineTabInitialContent). Outdated asynchronous network search responses (e.g. earlier keystrokes) are silently discarded, eliminating search result overwrites and unwanted page reloads. - Offline Track Download Manager: Integrated one-tap offline downloader (
_downloadOnlineTrack) for YouTube Music online tracks. Saves.m4aaudio files directly to the public device storage directory (Music/Flow/) with clean metadata filenames (Artist - Title.m4a) and zero extra.jpgcover files, registering clean metadata into the local library so downloaded tracks appear instantly in the Songs tab and play 100% offline across app restarts. - Remove from Recently Played & Cache Purger: Added
removeOnlineTrackFromHistoryoption with standard neutral icon styling. Deletes selected tracks fromyt_online_historyand automatically purges associated temporary audio cache files (yt_videoId.m4a) from storage and memory. - Online Detail Routing (Go to Album & Go to Artist): Enabled 3-dots track options menu "Go to Album" and "Go to Artist" actions for online tracks, querying the online track pool (
_onlineSearchResults,_onlineHistoryTracks,_onlineQuickPicks,_similarArtistTracks) while maintaining complete isolation from local MP3 files. - Streamlined Track Options & Online Playlist Removal: Context menu automatically hides local file operations (Hide from Library, Delete from Device) when viewing tracks inside Album and Playlist detail views to prevent accidental file deletion. Enables Remove from Playlist for user online playlists and cached online playlists.
- Multilingual i10n Localization Updates: Expanded ARB localization files (
app_en.arb,app_id.arb,app_id.arb) with download and history management strings (downloadTrack,downloadingTrack,downloadSuccess,alreadyDownloaded,downloadFailed,removeFromHistory,historyRemoved). - Now Playing Keyboard Dismissal Fix: Fixed soft keyboard pop-up bugs by automatically unfocusing search nodes (
_searchFocusNode.unfocus()) on mini player, full-screen player, and track list interactions. - Modern Pulsing Skeleton Loading System: Replaced plain circular progress spinners across all YouTube Music views (Home, Playlists, Artists, Albums) with smooth, pulsing skeleton loading placeholders (
_SkeletonBox), bringing a premium Spotify-like loading experience. - Instant Zero-Flicker M4A Artwork Disk Cache Engine: Synchronously initializes the artwork cache directory (
ArtworkCacheManager.init) prior to frame 0 inmain(), paired with anArtworkType.ALBUMfallback whenAUDIOartwork is missing. Completely eliminates M4A/AAC cover flickering on app startup. - Volume-Restored Auto-Advance & Crossfade Engine: Enclosed volume transitions in a strict
try...finallyblock inside_slideWindowInPlaceandcurrentIndexStream.listen, guaranteeing audio volume automatically restores to_volumeon natural track transitions and crossfade interrupts, preventing silent next track playback. - Instant Non-Blocking Home Load & Infinite Skeleton Safeguard: Unblocked initial Home tab loading immediately upon history and quick picks return, adding
!_isOnlineContentLoadedsafeguards and multi-fallback search queries (Top Songs,Trending Music,Popular Hits) to eliminate infinite re-entrant search loops on Home. - 1x Initial Tab Entrance Animation & Pill Tap Re-Trigger Engine: Smooth
_FadeInSlideUpentrance animations play once upon initial tab visit, remain static during horizontal swipe gestures, and re-trigger dynamically when tapping header capsule buttons. - Precision YouTube Stream Audio Resolution (
yt_Prefix Fix): Fixed video ID prefix parsing ingetAudioStreamFilePathto stream exact 11-char YouTube audio streams without unwanted fallback searches, guaranteeing 100% audio sync for Trending Playlists and Quick Picks. - Online Albums Played Track Isolation & Generic Filter: Online album views and details now strictly isolate tracks the user has actually played, filtering out generic album tags (
Single,Unknown Album) and unplayed random search clutter.
- Massive Internal Refactoring: Decomposed monolithic God-Object files into 28 focused
partfiles acrosslib/ui/,lib/logic/, andlib/screens/.main_audio_logic.dart(2054 lines) split into 5 domain files,modals_track_ui.dart(2258 lines) into 9 UI files,settings_modals.dart(2671 lines) into 8 settings files. Zero behavior changes — all 98 methods preserved,flutter analyzeclean. - Smooth Synced Lyrics Auto-Follow Return Animation: Resolved stiff, abrupt position snaps when returning to auto-follow mode after user manual scrolling. Replaced zero-delay jumps with a fluid 900ms
Curves.fastOutSlowIncurve animation, allowing the lyrics view to glide back to the active line naturally. Tap-to-lyric seek glides instantly to the tapped line, and initial load glides smoothly to the active line instead of jumping from the top. - Ringtone Cutter Preview Race Fix: Fixed a race condition where restarting a cut preview after pausing caused the old preview timer to silently kill the new playback mid-cue. Session-scoped timers now guarantee only the active preview can stop itself.
- Lyrics Timing Offset: Fix desynced LRC lyrics directly from Edit/Add Lyrics — set a per-track offset in seconds (positive = lyrics later, negative = lyrics earlier) with quick ±0.1s / ±0.5s steps. Persisted per track and applied automatically on every load. Fully localized (EN/ID/JA).
- Font Flash Elimination: Selected Google Font (Figtree / Inter / Plus Jakarta Sans) is now preloaded before the first frame renders, eliminating the default-font flash when launching the app.
- Removed Double-Tap Album Art Favorite: Double-tapping the album artwork no longer toggles Favorite status — single tap opens Lyrics only, preventing accidental favorites while browsing.
- Dynamic Viewport Stagger Animations: Replaced fixed absolute-index stagger logic with viewport-based count tracking (top 8 visible items) across all tab pills (Songs, Playlists, Artists, Albums). Switching tabs or returning to a scrolled tab now consistently plays cascading slide-up entrance animations for the top visible items regardless of scroll depth.
- Fail-Safe Backup & Restore Engine: Resolved
errno = 13 (Permission Denied)on Android 10–15 Scoped Storage via multi-tiered fallback paths (Public Downloads → App External Storage → App Documents Directory). Guarantees seamless JSON backups and restores across all Android versions.
The project has been refactored into a highly modular, decoupled architecture using Dart's part and part of directives, keeping local state synchronization lightweight and seamless:
lib/main.dart: Root application entry, boot sequence initialization, and core Scaffold state container. Now elegantly stripped of massive logic blocks for a clean ~700 line entrypoint.lib/logic/audio_playback_logic.dart: Playback queue transformations, smooth seek, repeat modes, and dynamic lyric fetching. (split frommain_audio_logic.dart)lib/logic/audio_settings_logic.dart: Settings persistence, sleep timer, and detail-color extraction.lib/logic/audio_streams_logic.dart: Audio stream wiring and playback state synchronization.lib/logic/audio_library_scan_logic.dart: Library scanning, permission flow, and startup update checks.lib/logic/audio_equalizer_logic.dart: Saved equalizer session restore.lib/ui/main_ui_components.dart: Core skeletal UI renderers extracted from the main tree, including custom headers, empty states, and dynamic playlist grid covers.lib/ui/player_ui.dart: Fullscreen adaptive music player UI. Houses physics-based swipe-down gestures, sliding mini players, and dynamic palette-based gradients.lib/ui/detail_views_ui.dart: Dynamic detail overlays for Artists, Albums, and custom/default Playlists.lib/ui/tabs_ui.dart: Viewport page layouts hosting horizontal swipable tabs (Songs list, Playlist cards, Artist list, Album cards) and the standard search system.lib/ui/track_options_ui.dart/edit_metadata_ui.dart/sort_ui.dart/sort_modal_ui.dart/detail_sort_ui.dart: Track option modals, metadata editor, and sort/detail-sort sheets. (split frommodals_track_ui.dart)lib/ui/song_info_ui.dart/cover_picker_ui.dart/song_cover_picker_ui.dart/ringtone_cutter_ui.dart: Song info, cover selection, and ringtone cutter modals. (split frommodals_track_ui.dart)lib/ui/playlist_edit_songs_ui.dart/playlist_manage_ui.dart: Playlist song editing and management CRUD modals. (split frommodals_playlist_ui.dart)lib/ui/sleep_timer_ui.dart/folder_scan_ui.dart/modals_utility_ui.dart/equalizer_sheet_ui.dart: Sleep timer, folder scan, and equalizer sheet modals. (split frommodals_utility_ui.dart)lib/screens/settings_screen.dart& split settings modals (settings_sleep_timer.dart,settings_backup_restore.dart,settings_hidden_tracks.dart,settings_threshold_ui.dart,settings_typography_ui.dart,settings_theme_accent_ui.dart,settings_theme_mode_ui.dart,settings_language_density_ui.dart): A standalone, polished Material 3 settings hub entirely decoupled from monolithic implementations, utilizing isolated component builders and dedicated modal controllers.lib/widgets/settings/settings_ui_components.dart: Modularized stateless building blocks for the Settings screen (Section Headers, Premium Cards, Switch Tiles, List Tiles).lib/providers/settings_provider.dart: Riverpod state management providers for reactive settings updates across the app.lib/services/audio_handler.dart: OS-level audio intent interception and background service hooks (MyAudioHandler).lib/utils/artwork_cache_manager.dart: Ultra-fast multi-tier background artwork preloading and memory caching engine.lib/utils/image_cropper_util.dart: Native and pure Flutter 1:1 and 9:16 aspect ratio image cropping utilities.lib/utils/globals.dart: Centralized dependency injection for global stateValueNotifiers, theme configuration tools, and app-wide Toast notification helpers.lib/l10n/: Type-safe FlutterAppLocalizationsARB files (app_en.arb,app_id.arb,app_ja.arb) for full English, Indonesian, and Japanese internationalization.
just_audio: High-performance local and streaming audio playback engine.audio_service: OS-level audio session backgrounding and system tray locking controls using MediaSession APIs.on_audio_query: Scoped querying of local media storage structures.permission_handler: Runtime operating system authorization checks (Storage/Notification).shared_preferences: Local key-value state persistence (play count, custom playlists, settings).flutter_riverpod: Reactive state management framework for clean decoupled architecture.google_fonts: Premium text styles and typography integration (Figtree, Inter, Plus Jakarta Sans).mini_music_visualizer: Real-time visual music playing equalizer bars.fluttertoast: Non-blocking platform native alert toasts.palette_generator: Extraction of dynamic dominant palette colors from album art.image_picker: Device photo gallery selection utilities.image_cropper/crop_image: Pure Flutter and native interactive image cropping framework.audio_session: Native platform hardware-level audio session interrupt binds and headset connect listeners.url_launcher: Intent dispatching to external links (GitHub / Sociabuzz).package_info_plus: Dynamic application version extraction.
- Android: Requires
minSdk21,targetSdk34 (or higher), and Java 17 for compilation. Note that the project utilizes Flutter's Built-in Kotlin compatibility. - Gradle & Kotlin: Android Gradle Plugin 8.+ with Kotlin Built-in compiler options (
JVM 17). - Split Release Command: Build optimized target-architecture APKs using
flutter build apk --release --split-per-abi.
- When running on Android 13 or higher, ensure that the application is granted the
READ_MEDIA_AUDIOpermission for proper library scanning. The application usescontent://URIs to support scoped storage natively. - Make sure to use JDK 17 for compiling the Android build due to updated Kotlin and Gradle Plugin (
build.gradle.kts) requirements. - Native Android methods (Equalizer, Mono Audio, Ringtone export) are bridged via MethodChannels in
MainActivity.kt.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for more details.





