feat(exécution): refonte des chronos de séance et carte exercice actif (ticket #90)

Réorganise l'écran d'exécution autour d'une carte "Exercice actif" sous
le compteur SÉRIE X/Y (nom, médias, temps de série, action "Démarrer
l'exercice"). Le timer de série devient un état persistant dédié (plus
un DateTime UI volatile), pause-aware, et "Démarrer l'exercice" lance
en une action tous les chronos qui doivent démarrer en début de série
(série, première étape temps, score chrono si stopwatch).

Implémentation restée non commitée depuis sa réalisation ; QA a validé
les vérifications statiques exécutables en sandbox (dart analyze,
git diff --check). flutter analyze / flutter test restent à relancer
dans un environnement avec cache Flutter SDK accessible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 22:26:28 +02:00
parent 73cfa644c2
commit 75f52200a2
16 changed files with 4615 additions and 364 deletions

View File

@ -405,7 +405,6 @@ final class _ExerciseFormScreenState extends State<ExerciseFormScreen> {
var _importingVideo = false;
var _stepsEnabled = false;
var _autoStartNextTimedStep = true;
var _nextStepDraftId = 0;
final _stepDrafts = <_ExerciseStepDraft>[];
String? _measureError;
String? _stepError;
@ -1057,7 +1056,7 @@ final class _ExerciseFormScreenState extends State<ExerciseFormScreen> {
_stepError = null;
_stepDrafts.add(
_ExerciseStepDraft(
id: 'step-draft-${_nextStepDraftId++}',
id: widget.exerciseUseCases.ids.newId(),
name: 'Nouvelle étape',
defaultTargetValue: '10',
),
@ -1111,7 +1110,7 @@ final class _ExerciseFormScreenState extends State<ExerciseFormScreen> {
_stepError = null;
_stepDrafts.insert(
index + 1,
_stepDrafts[index].duplicate('step-draft-${_nextStepDraftId++}'),
_stepDrafts[index].duplicate(widget.exerciseUseCases.ids.newId()),
);
});
}

File diff suppressed because it is too large Load Diff