Conception de la politique de feed vidéo (prefetch, layout, garde-fous de scroll) ; intégration API et refactoring de l'architecture cliente en complément
Politique de feed vidéo — prefetch, layout et garde-fous de scroll
Politique de feed vidéo testable en Dart pur : prefetch borné, hauteur clampée, mode carte portrait, annulation au scroll rapide — intégration API et refactoring en complément.
- 0,35–0,75
- hauteur média (fractions écran)
- 0,8
- seuil mode carte portrait
- ±1
- rayon index lecteur actif
Contexte
Application mobile sociale Flutter (cagnottes / collecte) : feed type réseau social avec vidéos ; SDKs métier modulaires séparés de la couche UI. Le rendu reste dans l'app ; la politique de nombres est partagée.
Le problème
Mélanger layout, prefetch et lecteur dans les widgets rendait la politique non testable et difficile à réutiliser. Un préchargement trop agressif saturait le réseau ; des ratios non bornés produisaient des posts illisibles.
L'approche
- Package Dart pur sans Flutter : calculs de ratio, hauteur clampée (facteurs 0,35–0,75), largeur « carte » sous seuil portrait 0,8.
- Prefetch d'URLs images sur N posts suivants avec dédoublonnage d'ordre ; lecteur vidéo limité au voisinage (rayon d'index actif ±1).
- Suivi de vélocité de scroll et états (scroll rapide / focus) pour autoriser ou couper le prefetch anticipé.
- Intégration via path deps + Riverpod ; cache HLS via adaptation locale d'une librairie de cache vidéo progressive.
- Refactoring architecture cliente : séparation UI / SDKs métier / logique réseau, contrats d'API unifiés.
Pourquoi ce choix
Isoler la politique en Dart pur permet de la tester avec `dart test` sans widgets. La lib de cache progressive est une dépendance tierce adaptée, pas réécrite from scratch — l'apport principal est la politique de feed, pas le lecteur bas niveau.
Résultat mesuré
- Politique de feed documentée et versionnée indépendamment de l'UI
- Préchargement borné (forward steps + anti-rebond visibilité 180 ms)
- Architecture cliente refactorée avec SDKs métier découplés