A modern, cross-platform music player built with Flutter that supports local audio files with a beautiful design.
- π΅ Local Audio Playback: Play MP3, WAV, OGG, and AAC files
- π¨ Material 3 Design: Modern, accessible UI following latest design standards
- π± Cross-Platform: Runs on macOS, iOS, Android, Windows, and Linux
- πΌοΈ Album Art Support: Displays embedded album artwork from audio files
- β±οΈ Duration Display: Shows accurate song length and playback progress
- ποΈ Playback Controls: Play, pause, stop, and seek functionality
- π File Picker: Easy audio file selection and import
- π§ͺ Comprehensive Testing: Full test coverage for reliability
Screenshots will be added here
Before you start contributing, you'll need to install Flutter and set up your development environment.
- macOS: macOS 10.14 or later
- Windows: Windows 10 or later
- Linux: Ubuntu 18.04 or later
- Disk Space: At least 2.8 GB of free space
- RAM: 8 GB or more recommended
# Using Homebrew (recommended)
brew install flutter
# Or download manually
# 1. Download Flutter SDK from https://docs.flutter.dev/get-started/install/macos
# 2. Extract to a location (e.g., ~/development/flutter)
# 3. Add to PATH: export PATH="$PATH:~/development/flutter/bin"# 1. Download Flutter SDK from https://docs.flutter.dev/get-started/install/windows
# 2. Extract to C:\src\flutter
# 3. Add C:\src\flutter\bin to your PATH environment variable# Using snap (Ubuntu)
sudo snap install flutter --classic
# Or download manually
# 1. Download Flutter SDK from https://docs.flutter.dev/get-started/install/linux
# 2. Extract to ~/development/flutter
# 3. Add to PATH: export PATH="$PATH:~/development/flutter/bin"- Download and install VS Code
- Install the Flutter extension:
- Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for "Flutter"
- Install the official Flutter extension
- Download and install Android Studio
- Install the Flutter plugin:
- Open Android Studio
- Go to Preferences/Settings β Plugins
- Search for "Flutter"
- Install the Flutter plugin
# Install Xcode from the App Store
# Install CocoaPods
sudo gem install cocoapods
# Install Rust (required for metadata_god package)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"# Install Visual Studio Build Tools
# Download from: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022# Install required packages
sudo apt-get update
sudo apt-get install -y \
clang \
cmake \
ninja-build \
pkg-config \
libgtk-3-dev \
liblzma-dev# Check Flutter installation
flutter doctor
# This should show all components as green β
# If there are issues, follow the suggested fixesgit clone https://github.com/yourusername/Tunetopia.git
cd Tunetopiaflutter pub getflutter run -d macosflutter run -d iosflutter run -d androidflutter run -d chromelib/
βββ constants/
β βββ style.dart # App styling constants
βββ models/
β βββ song.dart # Song data model
βββ pages/
β βββ home.dart # Main home page
β βββ song_page.dart # Individual song player page
β βββ setting_page.dart # Settings page
β βββ widgets/
β βββ appbar.dart # Custom app bar
β βββ controls.dart # Audio playback controls
β βββ home_item.dart # Home page items
β βββ my_drawer.dart # Navigation drawer
βββ providers/
β βββ songs.dart # Song management provider
βββ theme/
β βββ theme.dart # App theme configuration
β βββ theme_provider.dart # Theme state management
βββ main.dart # App entry point
git checkout -b feature/your-feature-name- Follow the existing code style
- Add tests for new functionality
- Update documentation if needed
# Run all tests
flutter test
# Run specific test file
flutter test test/widget_test.dart
flutter test test/duration_loading_test.dart
# Run with coverage
flutter test --coverage# Analyze code
flutter analyze
# Format code
flutter format .
# Run linter
flutter lintgit add .
git commit -m "feat: add your feature description"git push origin feature/your-feature-name
# Create PR on GitHubThe project includes comprehensive tests with 85%+ code coverage:
- Unit Tests: Test individual functions and classes
- Widget Tests: Test UI components
- Integration Tests: Test complete user flows
# Run all tests
flutter test
# Run with coverage report
flutter test --coverage
# Run specific test files
flutter test test/widget_test.dart
flutter test test/duration_loading_test.dartThe project maintains high test coverage across all major components:
- β Song management and metadata handling
- β UI components and user interactions
- β File validation and error handling
- β Theme and settings functionality
- Follow Dart/Flutter conventions
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions small and focused
Use conventional commit format:
feat: add new feature
fix: resolve bug
docs: update documentation
test: add or update tests
refactor: code refactoring
style: formatting changes
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Update documentation
- Submit a pull request
# If flutter doctor shows issues, run:
flutter doctor --android-licenses
flutter config --enable-web
flutter config --enable-macos-desktop- Ensure audio files are in supported formats (MP3, WAV, OGG, AAC)
- Check file permissions
- Verify audio device is working
# Clean and rebuild
flutter clean
flutter pub get
flutter run# If you get permission errors:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
# If Rust is not found:
source "$HOME/.cargo/env"flutter: Core Flutter frameworkprovider: State managementaudioplayers: Audio playback functionalitymetadata_god: Audio file metadata extractionfile_picker: File selectionpermission_handler: Platform permissionscached_memory_image: Image caching
flutter_test: Testing frameworkflutter_lints: Code lintingmockito: Mocking for testsbuild_runner: Code generation
This project is licensed under the MIT License - see the LICENSE file for details.