Przeglądaj źródła

Investigate Home-slider crash fix: found native Empty List Widget property, blocked by right-panel clipping

- Verified in the FlutterFlow builder that the Carousel widget on
  HomeUitgaanSliderComponent has a built-in 'Empty List Widget' property
  that's exactly the fix needed (skip rendering when the API list is empty,
  no ConditionalBuilder/condition-editing required).
- The existing 'interim' ConditionalBuilder from commit 1a22bbf turns out to
  wrap the wrong scope (outside the FutureBuilder/data fetch), so it can't
  actually see the result list - confirmed not a real fix.
- Couldn't toggle the 'Show Empty List Widget' checkbox myself: it renders
  outside the clickable/screenshot viewport even after Bob enlarged his
  window (5 attempts: direct clicks at multiple offsets, click+Space,
  horizontal scroll). Documented in CLAUDE.md as a refinement of the known
  right-panel-clipping issue.
- Reassigned P0 #1 to [Bob] with exact click-path (~10 seconds for him).
- P0 #2 (foutafhandeling) not yet started this session, per Bob's simplified
  'just skip on error, don't build a retry UI' answer.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 1 miesiąc temu
rodzic
commit
d7478db57a
2 zmienionych plików z 48 dodań i 21 usunięć
  1. 15 3
      CLAUDE.md
  2. 33 18
      TASKS.md

+ 15 - 3
CLAUDE.md

@@ -170,9 +170,21 @@ zoekresultaten → "Rename Component".
 
 **Rechterpaneel kan te breed zijn voor de viewport.** Sommige controls
 (Expansion segmented control, Visibility → Conditional
-expression-builder) renderen soms deels buiten beeld — geen
-`resize_window`-probleem (niet zelf resizen, zie boven). Na 1-2
-bevestigde pogingen stoppen en aan Bob vragen.
+expression-builder, maar ook simpele checkboxen zoals "Show Empty List
+Widget" op een Carousel/ListView) renderen soms deels buiten beeld —
+geen `resize_window`-probleem (niet zelf resizen, zie boven).
+**Bevestigd 2026-08-04: dit blijft optreden zelfs nadat Bob zijn eigen
+venster al vergroot had** — de FlutterFlow-app zelf lijkt de extra
+breedte niet te gebruiken (real window 1970px, maar bruikbare
+schermafbeelding/klikbare ruimte bleef begrensd tot ~1176px; de
+JS-laag rapporteert wel de volle vensterbreedte, dus dit zit in hoe
+Flutter Web rendert/schaalt, niet in het venster zelf). Geen
+DOM/accessibility tree beschikbaar (canvas-rendering) — `find` en
+`read_page` werken hier niet, alleen coördinaat-gebaseerd klikken.
+Geprobeerd en zonder succes: direct klikken op meerdere
+x-posities, klikken + Space-toets, horizontaal scrollen. Na 1-2
+bevestigde pogingen stoppen en aan Bob vragen — geef het exacte pad
+(component, tree-node, veldnaam) zodat hij het in seconden kan doen.
 
 **Patroon: lege/ontbrekende afbeeldings-URL laat de app crashen.**
 `CachedNetworkImage` gooit een **synchrone** `ArgumentError` bij het

+ 33 - 18
TASKS.md

@@ -21,9 +21,9 @@ repliceren patroon.
 ## Sessie-indeling (suggestie voor tokenefficiëntie)
 
 Groepeer bij het oppakken bij voorkeur per FlutterFlow-paginagebied:
-- **Nu opgepakt:** Home-slider empty-state + Foutafhandeling
-  Horeca-overzicht (zie onder) — 2 losse paginagebieden, maar beide
-  hoogste-ernst P0.
+- **Nu opgepakt:** Home-slider empty-state (bleek uiteindelijk
+  [Bob, 10 sec] — zie P0 #1) + Foutafhandeling Horeca-overzicht
+  ([Claude], nog te onderzoeken — zie P0 #2).
 - **Volgende sessie, Login/favorieten-afronding:** lege-lijst
   empty-state favorietenpagina + hartje-op-gemeente (ná designantwoord)
   + favorieten-sync-verificatie.
@@ -47,23 +47,38 @@ Groepeer bij het oppakken bij voorkeur per FlutterFlow-paginagebied:
 
 ## P0 — blokkeert livegang
 
-1. [ ] **Home-slider crasht (RangeError) bij 0 API-resultaten — interim
-   fix staat, proper fix nog niet.** [Claude, met fallback naar Bob]
-   `CarouselSlider.builder` met `itemCount: 0` crasht. Commit `1a22bbf`
-   (2026-08-03, Bob) wrapte de Home-slider al in een ConditionalBuilder
-   met een **altijd-waar** conditie + placeholder-else, als tijdelijke
-   patch — expliciet bedoeld als interim, "proper native empty-state
-   binding" staat nog open. `home_uitgaan_slider_component_widget.dart`.
-   **Vraag aan Bob vóór starten:** wat moet de eindtoestand tonen bij 0
-   resultaten — niets (component skip) of een "geen evenementen"-melding
-   op Home? En: ben je zelf al met de proper-fix bezig?
+1. [ ] **Home-slider crasht (RangeError) bij 0 API-resultaten — fix
+   gelokaliseerd, 1 klik voor Bob nodig.** [Bob, 10 seconden werk]
+   Bob koos: bij 0 resultaten component overslaan (niets tonen), geen
+   melding. `CarouselSlider.builder` met `itemCount: 0` crasht. Commit
+   `1a22bbf` (2026-08-03, Bob) wrapte de Home-slider al in een
+   ConditionalBuilder met een altijd-waar conditie — bleek bij
+   onderzoek 2026-08-04 op het verkeerde niveau te zitten (buiten de
+   FutureBuilder/data-scope, kan de resultatenlijst dus niet zien) en
+   is dus geen echte fix. **Betere, native route gevonden:** de
+   `Carousel`-widget zelf (child van If → Container in de tree) heeft
+   een ingebouwde **"Empty List Widget"**-property — precies bedoeld
+   voor dit scenario, geen ConditionalBuilder nodig. Stappen:
+   FlutterFlow → component `HomeUitgaanSliderComponent` → Widget Tree
+   → selecteer de `Carousel`-node (onder ConditionalBuilder → If →
+   Container) → rechterpaneel → **"Empty List Widget"** → vink **"Show
+   Empty List Widget"** aan → als widget een lege/onzichtbare placeholder
+   instellen (matcht "component overslaan"). **Bij Bob i.p.v. Claude:**
+   die checkbox rendert buiten de klikbare/screenshot-ruimte (bevestigd
+   na 5 pogingen, zie CLAUDE.md "Rechterpaneel te breed") — ook na het
+   vergroten van het venster. Kost Bob ~10 seconden, kostte mij te veel
+   tool-calls voor niks.
 
 2. [ ] **Foutafhandeling ontbreekt op HorecagelegenhedenOverzicht.**
-   [Claude] 6 FutureBuilders checken alleen `!snapshot.hasData` — bij
-   een mislukte call (niet alleen "nog geen data") blijft het
-   laadwieltje voor altijd draaien, want er is geen `hasError`-tak.
-   Bevestigd: dit patroon bestaat nergens elders in de app om te
-   kopiëren, dus zelf een compacte foutmelding + retry ontwerpen.
+   [Claude, nog te onderzoeken] Bob's antwoord: gewoon skippen zodra er
+   iets misgaat, geen melding/retry-knop nodig — "als de app maar niet
+   crasht, 0 inhoud zou een outage betekenen". 6 FutureBuilders checken
+   alleen `!snapshot.hasData` — bij een mislukte call blijft het
+   laadwieltje voor altijd draaien (geen crash, wel een dooie boel).
+   Nog niet onderzocht of hier ook een native "empty/error state"-optie
+   bestaat zoals bij de Carousel hierboven, of dat dit alsnog handmatige
+   conditie-opbouw vereist (en dus mogelijk ook de rechterpaneel-klik-
+   beperking raakt). Oppakken in de volgende sessie.
    `lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart`
    (regels 283, 467, 651, 835, 1019, 1203).
    **Vraag aan Bob vóór starten:** akkoord met "compacte melding +