Files
Vincent Bourdon 16fd4c8c36 docs: cadrage initial Storytime (specs par jalon, roadmap, CLAUDE.md)
Lecteur d'histoires cadenassé pour le coucher (Android/Flutter).
- CLAUDE.md : principes craftsmanship/TDD/clean code/clean archi + decisions techniques
- ROADMAP.md : suivi haut niveau des 7 jalons, a tenir a jour par etape
- docs/specs/ : specs completes decoupees par jalon, etapes en sous-fichiers
- .gitignore Flutter (pubspec.lock versionne, projet applicatif)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 17:03:33 +02:00

1.8 KiB

2.3 — UI lecteur + contrôleur Riverpod

Objectif

Offrir un lecteur utilisable par l'enfant : gros boutons lecture/pause, précédent/suivant, barre de progression, titre de l'histoire en cours.

Périmètre & hors-périmètre

  • Inclus : contrôleur Riverpod (AsyncNotifier/Notifier) consommant les use cases, widget lecteur.
  • Exclus : la liste des histoires (jalon 4) ; ici on teste avec une file en dur.

Dépendances

2.1, 2.2.

Conception

  • Presentation (features/playback/presentation/) :
    • PlaybackController (Riverpod Notifier) : expose PlaybackState, méthodes play/pause/next/previous/seek déléguant aux use cases ; s'abonne à WatchPlaybackStateUseCase.
    • PlayerView (widget) : grand bouton central play/pause (icône claire), boutons précédent/suivant, Slider de progression, titre + vignette.
    • Composants tactiles larges, lisibles le soir (thème de 0.3).
  • Pas de logique métier dans le widget : tout passe par le contrôleur → use cases.

Plan TDD

  1. Red : playback_controller_test.dart — avec use cases mockés, play() appelle TogglePlayPauseUseCase ; l'état du contrôleur reflète les PlaybackState émis.
  2. Green : implémenter le contrôleur.
  3. Red : player_view_test.dart (widget) — tap sur le bouton play déclenche controller.play (provider overridé par un mock) ; l'icône bascule play/pause selon l'état ; le titre s'affiche.
  4. Green : implémenter le widget.
  5. Refactor.

Definition of Done

  • Tests contrôleur + widget verts.
  • Démo manuelle : avec une file en dur, lecture/pause/suivant/seek fonctionnent et l'UI suit.
  • tool/check.sh passe ; étape 2.3 cochée dans ROADMAP.md.

Risques / notes

  • Soigner l'accessibilité tactile (taille des cibles) dès maintenant : c'est l'écran que l'enfant manipule.