YaTube is a lightweight Flutter-based audio player built around YouTube content. The app extracts audio streams and provides playlist management, background playback, and a Neumorphic UI theme system.
- Play audio from YouTube videos (uses
youtube_explode_dartfor stream extraction). - Background playback and foreground service support (Android).
- Playlist management (save / delete tracks in local storage).
- Theme system with multiple Neumorphic themes.
- Responsive UI with custom controls (play/pause, seek, volume, repeat, shuffle).
Place screenshots into assets/screenshots/ (see the instructions below). Example screenshot references:
| Home | Playlist | Settings |
|---|---|---|
![]() |
![]() |
![]() |
Prerequisites
- Flutter SDK (stable) installed and configured: https://flutter.dev/docs/get-started/install
- Android SDK / Xcode (for iOS) as required
- A connected Android device or emulator for testing
Install dependencies
flutter pub getGenerate code (if you modified models / freezed files)
flutter pub run build_runner build --delete-conflicting-outputsRun on a connected device (debug)
flutter runBuild release APK
flutter build apk --release
# Install on device (adjust path if needed)
adb install -r build/app/outputs/flutter-apk/app-release.apkFor background audio and network access make sure the following permissions and configuration are present in android/app/src/main/AndroidManifest.xml:
android.permission.INTERNETandroid.permission.FOREGROUND_SERVICEandroid.permission.WAKE_LOCKandroid.permission.POST_NOTIFICATIONS(Android 13+ if you show notifications)
Also ensure xmlns:tools is declared in the root <manifest> tag if you use tools: attributes.
- 403 / ExoPlayer Source error: If playback fails with a 403 or invalid response code, YouTube may block direct streaming URLs. Use
youtube_explode_dartto fetch audio-only streams and either play them directly with appropriate headers or download to a temporary file and play locally. - Works in debug but not in release: check
minifyEnabled/ proguard settings inandroid/app/build.gradle(try disabling minify to diagnose). Also inspect the merged manifest and ensureandroid:exportedand service configuration are correct for Android 12+. - Check device logs with
adb logcatto get precise runtime errors when an installed APK misbehaves on specific Android versions.
- Create the directory in your project root:
mkdir -p assets/screenshots- Put screenshot files (PNG preferred) into
assets/screenshots/, for example:
assets/screenshots/home_player.png
assets/screenshots/playlist.png
assets/screenshots/settings.png
- Re-run
flutter pub get(we added theassets/screenshots/entry topubspec.yamlso Flutter will bundle them)
This project is provided as-is. Add your license here (MIT, Apache-2.0, etc.) or remove this section if proprietary.
- Fork the repo and open a pull request for bug fixes or features.
- Run tests and linters before PR.
For questions, reach out to the maintainer: Nguen T.B (bak_nguen@vk.com).


