Une application mobile Flutter complète pour créer et gérer des entraînements de boxe avec des minuteurs personnalisables.
- Affichage de la liste des entraînements sauvegardés
- Recherche d'entraînements par nom
- Actions rapides : démarrer, modifier, dupliquer, supprimer, partager
- Interface moderne avec Material Design 3
- Nom personnalisable pour chaque entraînement
- Configuration des phases optionnelles :
- Échauffement (0-60 minutes)
- Récupération (0-60 minutes)
- Gestion des rounds :
- Durée du round (1-30 minutes)
- Durée du repos entre rounds (0-15 minutes)
- Ajout/suppression de rounds dynamique
- Résumé en temps réel avec statistiques
- Timer circulaire avec animation visuelle
- Affichage clair du temps restant et de la phase actuelle
- Progression globale et par phase
- Contrôles intuitifs : Start, Pause, Reset, Skip
- Informations contextuelles selon la phase
- Signaux sonores pour chaque changement de phase
- Vibrations configurables selon l'appareil
- Compte à rebours audible pour les 3 dernières secondes
- Sons différenciés par type de phase
- Stockage automatique des entraînements
- Données persistantes avec SharedPreferences
- Pas de connexion internet requise
- Sauvegarde instantanée des modifications
- Design moderne et intuitif
- Support du thème sombre/clair automatique
- Interface responsive pour différents écrans
- Animations fluides et feedback visuel
- Couleurs contextuelles selon les phases
- Export d'entraînements au format JSON
- Partage via les applications installées
- Import d'entraînements externes (bonus)
- Android (API 21+)
- iOS (iOS 11+)
- Linux Desktop (pour développement/test)
- Flutter SDK (>=3.0.0)
- Dart SDK
- Pour Linux : dépendances GStreamer
# Ubuntu/Debian
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev- Cloner le projet
git clone <repository_url>
cd BoxingTimer- Installer les dépendances
flutter pub get- Générer les fichiers de sérialisation
flutter packages pub run build_runner build- Lancer l'application
# Android/iOS
flutter run
# Linux Desktop
flutter run -d linux- Workout : Représente un entraînement complet
- Round : Représente un round individuel
- TimerState : État du minuteur pendant l'entraînement
- StorageService : Gestion du stockage local
- AudioService : Gestion des sons et vibrations
- TimerService : Logique du minuteur
- WorkoutProvider : Gestion des entraînements
- TimerProvider : Gestion de l'état du minuteur
- HomeScreen : Écran d'accueil avec liste des entraînements
- WorkoutEditScreen : Création/modification d'entraînements
- TimerScreen : Minuteur principal pendant l'entraînement
- WorkoutCard : Carte d'affichage d'un entraînement
- CircularTimerWidget : Timer circulaire animé
- TimerControlsWidget : Contrôles du minuteur
- PhaseInfoWidget : Informations de la phase actuelle
- EmptyStateWidget : Widget d'état vide
- provider : Gestion d'état
- shared_preferences : Stockage local
- json_annotation/json_serializable : Sérialisation JSON
- audioplayers : Lecture de sons
- vibration : Gestion des vibrations
- share_plus : Partage de fichiers
- path_provider : Gestion des chemins
- Échauffement (optionnel) - Préparation
- Rounds - Alternance entre effort et repos
- Récupération (optionnel) - Retour au calme
Chaque phase a :
- Sa propre couleur visuelle
- Ses signaux audio spécifiques
- Ses vibrations dédiées
- Ses informations contextuelles
- Détection automatique des phases
- Progression fluide entre rounds
- Gestion des cas particuliers (pas de repos après le dernier round)
- Calculs de progression en temps réel
- Couleurs dynamiques selon la phase
- Animations conditionnelles
- Feedback visuel instantané
- Messages contextuels
- Sauvegarde automatique
- Récupération d'erreurs
- Validation des données
- Historique des modifications
- Créer un entraînement : Appuyer sur le bouton + depuis l'accueil
- Configurer les phases : Définir échauffement, rounds et récupération
- Démarrer l'entraînement : Appuyer sur une carte d'entraînement
- Utiliser les contrôles : Start/Pause/Reset/Skip selon vos besoins
- Suivre la progression : Visualiser l'avancement en temps réel
L'application utilise Material Design 3 avec :
- Couleur primaire : Rouge (thème boxe)
- Thème adaptatif selon le système
- Couleurs contextuelles par phase
- Animations fluides et cohérentes
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Les contributions sont bienvenues ! N'hésitez pas à :
- Signaler des bugs
- Proposer des améliorations
- Ajouter de nouvelles fonctionnalités
- Améliorer la documentation
Pour toute question ou problème, veuillez créer une issue sur le repository GitHub.