feat(exercice): valeurs par défaut d'exercice (tickets #39/#40, parent #30)

Étend le modèle Drift (tables.dart, app_database.dart/.g.dart), les
entités/use cases/repositories et les écrans bibliothèque d'exercices
et programme pour supporter des valeurs par défaut par exercice
(répétitions/temps/poids proposés à la création d'une série).
flutter analyze propre, 51/51 tests verts, build APK debug validé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 10:18:31 +02:00
parent 6ee06fef01
commit 88af0387da
14 changed files with 882 additions and 27 deletions

View File

@ -223,7 +223,7 @@ final class _ProgramFormScreenState extends State<ProgramFormScreen> {
buildDefaultDragHandles: false,
padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
itemCount: _exercises.length,
onReorder: _reorderExercise,
onReorderItem: _reorderExercise,
itemBuilder: (context, index) {
final exercise = _exercises[index];
return _ProgramExerciseCard(
@ -517,7 +517,6 @@ final class _ProgramExerciseCustomizationScreen extends StatefulWidget {
const _ProgramExerciseCustomizationScreen({
required _ProgramExerciseDraft draft,
required this.defaultRestSeconds,
super.key,
}) : _initialDraft = draft;
final _ProgramExerciseDraft _initialDraft;
@ -853,6 +852,14 @@ final class _ProgramExerciseDraft {
scoreUnitSnapshot: exercise.scoreUnit,
setsCount: 3,
enabledMeasures: exercise.availableMeasures,
targetTimeSeconds: exercise.defaultTargetTimeSeconds,
targetReps: exercise.defaultTargetReps,
targetScore: exercise.scoreInputMode == ScoreInputMode.manual
? exercise.defaultTargetScore
: null,
targetScoreTimeMs: exercise.scoreInputMode == ScoreInputMode.stopwatch
? exercise.defaultTargetScoreTimeMs
: null,
restSecondsOverride: restSecondsOverride,
);
}