docs(ordre): la géométrie mesurée — le seuil est en pixels, pas en nombre de charges
Relevé à uiautomator sur le banc (Redmi Note 9S, 3 domaines, 4 charges, blocs dépliés) : viewport de la liste 1 912 px Véhicule électrique (2 charges) 1 355 px Eau chaude sanitaire (1 charge) 1 171 px Chauffage (1 charge) 1 029 px Le doigt parcourt la hauteur de chaque bloc dépassé. D'où : échange de deux blocs voisins au pire 1 355 px < 1 912 -> passe remonter de deux rangs d'un coup 2 526 px > 1 912 -> impossible Le défaut est donc DÉJÀ atteignable à quatre charges, contrairement à ce qu'on m'a attribué : ce n'est pas cinq charges qui l'ouvrent, et ce n'est pas un seuil en nombre de charges du tout. Il se compte en pixels, et une charge de plus dans un domaine déjà servi ne coûte pas la même chose qu'un domaine de plus. Ce qui le rend peu grave n'est pas son inaccessibilité mais son contournement : deux échanges voisins successifs font le même déplacement, et replier les blocs aussi. Et la citation de favorites_screen.dart est corrigée. L'écran utilise bien CustomScrollView + SliverReorderableList, mais ce n'est pas un précédent transposable : là-bas la liste est plate et posée directement dans les slivers. Ici elle est deux composants plus bas — il faudrait que ControllableLoadsSection cesse de rendre une Column pour émettre des slivers, donc changer le contrat du widget et convertir tout le corps de roles_devices_screen. Un montage à écrire, pas à copier. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
This commit is contained in:
parent
e76d01160d
commit
c015bff63b
@ -126,6 +126,29 @@ class _ControllableLoadsSectionState extends State<ControllableLoadsSection> {
|
||||
// Conséquence attendue : on ne réordonnerait que ce qui tient à l'écran **en même
|
||||
// temps**. Un déplacement plus long que la fenêtre n'aboutirait pas.
|
||||
//
|
||||
// **La géométrie, mesurée sur le banc le 2026-09-08** (Redmi Note 9S, 3 domaines,
|
||||
// 4 charges, tous les blocs dépliés) — hauteurs relevées à `uiautomator` :
|
||||
//
|
||||
// viewport de la liste 1 912 px
|
||||
// Véhicule électrique (2 charges) 1 355 px
|
||||
// Eau chaude sanitaire (1 charge) 1 171 px
|
||||
// Chauffage (1 charge) 1 029 px
|
||||
//
|
||||
// Le doigt doit parcourir la hauteur de CHAQUE bloc qu'il dépasse — la liste
|
||||
// se réordonne au passage, mais le proxy reste sous le doigt.
|
||||
//
|
||||
// échange de deux blocs VOISINS au pire 1 355 px < 1 912 → passe
|
||||
// remonter de DEUX rangs d'un coup 2 526 px > 1 912 → impossible
|
||||
//
|
||||
// Donc le défaut est **déjà atteignable aujourd'hui**, à quatre charges — mais
|
||||
// seulement sur un déplacement de deux rangs en un seul geste, et il se contourne
|
||||
// par **deux échanges voisins successifs**. C'est ce qui le rend peu grave, pas
|
||||
// son inaccessibilité.
|
||||
//
|
||||
// ⚠️ Le seuil ne se compte donc pas en nombre de charges : il se compte en pixels,
|
||||
// et une charge de plus dans un domaine déjà servi ne coûte pas la même chose
|
||||
// qu'un domaine de plus.
|
||||
//
|
||||
// **Le protocole en trois gestes**, si la plainte arrive un jour :
|
||||
//
|
||||
// A — replier tous les blocs (le chevron), puis remonter une plage par-dessus
|
||||
@ -142,7 +165,15 @@ class _ControllableLoadsSectionState extends State<ControllableLoadsSection> {
|
||||
// **Contournement** : replier les blocs — tout tient alors à l'écran.
|
||||
//
|
||||
// **Remède**, s'il faut y venir : UN seul `Scrollable`, en `CustomScrollView` +
|
||||
// `SliverReorderableList` — le montage déjà en place dans `favorites_screen.dart`.
|
||||
// `SliverReorderableList`.
|
||||
//
|
||||
// ⚠️ `favorites_screen.dart` utilise bien ce couple — mais ce n'est **pas** un
|
||||
// précédent transposable, et le citer comme tel ferait sous-estimer le travail.
|
||||
// Là-bas la liste réordonnable est plate, homogène, et posée directement dans les
|
||||
// slivers de l'écran. Ici elle est **deux composants plus bas** : il faudrait que
|
||||
// `ControllableLoadsSection` cesse de rendre une `Column` pour émettre des slivers
|
||||
// (`SliverMainAxisGroup`), donc changer le contrat du widget et convertir tout le
|
||||
// corps de `roles_devices_screen`. Un montage à écrire, pas un montage à copier.
|
||||
//
|
||||
// Et pourquoi aucun test ne tranchera : l'entrée synthétique ne reproduit pas un
|
||||
// appui-glissé (cf. `tools/rpc/README.md`). Aucun test de ce dépôt ne peut montrer
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user