A Flutter application for managing soccer matches, tracking player time, and handling match statistics. Perfect for coaches, referees, and team managers.
- Create and manage multiple matches
- Track match duration and periods
- Support for custom match durations and number of periods
- Background timer service for accurate time tracking
- Vibration and sound notifications for period changes
- Add and remove players during matches
- Track individual player time on the field
- Quick player substitution interface
- Player statistics tracking
- Backup match data to Downloads folder
- Restore from previous backups
- Automatic backup file naming with timestamps
- Support for multiple backup files
- Dark/Light theme support
- Customizable match settings
- Adjustable notification preferences
- Configurable sound and vibration feedback
- Flutter SDK
- Android Studio / VS Code
- Android device or emulator (Android 10 or higher recommended)
- Clone the repository
- Install dependencies:
flutter pub get
- Run the app:
flutter run
The app requires full storage access permission (MANAGE_EXTERNAL_STORAGE
) to:
- Save backup files to the Downloads folder
- Restore from existing backups
- Manage backup files
This permission is requested only when you try to backup or restore your data, not at app startup. When you click either "Backup Sessions" or "Restore Sessions", you'll be prompted to grant this permission.
The app needs full storage access to:
- Save backup files to your Downloads folder for easy access
- Read existing backup files from your Downloads folder
- Manage backup files (create, read, update, delete)
When you try to backup or restore:
- You'll see a dialog explaining why the permission is needed
- Click "Continue" to open Android Settings
- Find "All files access" or "Files and media" permission
- Enable it for Soccer Time
- Return to the app to continue with backup/restore
On Android 13 and newer devices, you'll need to grant "All files access" permission through the system settings. This is a security requirement from Android and cannot be bypassed.
The app uses a background service to ensure accurate time tracking even when the app is minimized. This requires:
- Notification permission for the foreground service
- Battery optimization exemption to prevent the service from being killed
These permissions are requested at app startup to ensure proper functionality.
lib/
├── models/ # Data models
├── providers/ # State management
├── screens/ # UI screens
├── services/ # Background and utility services
├── utils/ # Helper functions and constants
└── main.dart # App entry point
provider
: State managementhive
: Local databasepermission_handler
: Permission managementflutter_background_service
: Background timer serviceandroid_alarm_manager_plus
: Alarm managementwakelock_plus
: Screen wake lockshare_plus
: File sharing
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- All contributors and users of the app
- The soccer community for their feedback and suggestions