Просмотр исходного кода

CLAUDE.md: wel op het scherm, niet in de accessibility-tree = een afbeelding

Het "misplaatste blok" op MijnAanmeldingen bleek de geuploade logo-afbeelding
van de testevents (een screenshot van de app zelf). Recept om dat voortaan in
een minuut vast te stellen, plus de twee sporen die daarbij tijd kostten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 7 часов назад
Родитель
Сommit
c97e09a9eb
1 измененных файлов с 23 добавлено и 0 удалено
  1. 23 0
      CLAUDE.md

+ 23 - 0
CLAUDE.md

@@ -4270,6 +4270,29 @@ terwijl een verborgen-maar-aanwezig widget er wél in staat. Reken bij
 een `Row` met vaste breedtes dus altijd even uit of N × breedte binnen
 de smalste doeldevice-breedte past (telefoon-AVD = 411dp).
 
+**⚠️ Omgekeerd: staat er iets WEL op het scherm maar NIET in de
+accessibility-tree, dan is het geen widget maar een AFBEELDING — kijk naar de
+geüploade content, niet naar de code.** Bevestigd 2026-09-22, en het kostte een
+uur plus een APK-build. Op `MijnAanmeldingen` leek in élke kaart een misplaatst
+blok uit `mijnProfiel` te staan (een kaartje met pijl, een lege rode knop, en
+"My Establishments" + "Add a venue"). Het bleek de **logo-afbeelding van het
+evenement**: `Image.network(getJsonField(item, r'$.logo'))`, en als logo was bij
+die testindieningen een *screenshot van de app zelf* geüpload. Vier signalen die
+je meteen de goede kant op sturen:
+- `uiautomator dump` toont de kaart als één merged node met alleen de échte
+  tekst; de "widgets" uit het blok komen er niet in voor. Tekst in een Flutter-
+  widget komt daar altijd wél in.
+- Een `grep` op de zichtbare tekst geeft in de hele `lib/` **nul** gerenderde
+  treffers (hooguit als vertaalwaarde van een sleutel die elders staat).
+- De tekst is in een andere taal dan de rest van het scherm — een screenshot
+  bevriest de taal van het moment waarop hij gemaakt is.
+- Het overleeft een `force-stop` + een verse build: serverdata, geen code.
+**Vuistregel: doe de `uiautomator dump` als EERSTE stap** bij een vreemd blok op
+een lijstkaart. Twee verkeerde sporen die ik er anders achtereenvolgens in stak:
+"het is een oude build" (weerlegd door de installatietijd en de knopstijl te
+vergelijken) en "het is een stale render-tile van de emulator" (weerlegd door
+force-stop + deep link rechtstreeks naar de route).
+
 **Wél een overflow-melding, maar je weet niet wélke widget de ruimte opeet:
 vraag de render-tree op bij de draaiende DEBUG-app via de Dart VM service.**
 Dat geeft per RenderBox de exacte `constraints` en `size` — meten in plaats van