Преглед изворни кода

P2-6: stap 2 afgerond voor 5/6 tabs, widget-wiring geblokkeerd op structureel paginaprobleem

- Bob rondde stap 2 (fetchAlleHorecagelegenheden per tab) af voor
  Cultuur/Eetgelegenheden/Overnachten/Uitgaan/Verhuur-catering,
  bevestigd via verse export. Activiteiten (tab 0) mist nog de
  On-Page-Load-trigger, restpunt genoteerd.
- Stappen 3/4/6 (TextField, categorie-filter, lijsten herbinden)
  overgedragen aan Claude: Bob liep vast op een "Invalid Action"-
  blokkade rond de Container/TabBar (bekend patroon), maar ontdekte
  ook een verontrustender bug - een TextField toevoegen aan een
  gewone Column verving de bestaande kinderen i.p.v. ernaast te
  komen. Nog niet uitgezocht, eerst onderzoeken vóór opnieuw bouwen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob пре 2 недеља
родитељ
комит
16fe624746
1 измењених фајлова са 76 додато и 20 уклоњено
  1. 76 20
      TASKS.md

+ 76 - 20
TASKS.md

@@ -2191,26 +2191,82 @@ errors):**
   `CLAUDE.md`-notitie voor het volledige patroon + een tweede
   `CLAUDE.md`-notitie voor het volledige patroon + een tweede
   bijvangst-ontdekking (Ctrl+A/Delete werkt structureel niet in de
   bijvangst-ontdekking (Ctrl+A/Delete werkt structureel niet in de
   Custom Code-editor).
   Custom Code-editor).
-- **Stappen 3, 4, 6 (widget-wiring: TextField, categorie-chips,
-  Generate Dynamic Children herbinden) nog te doen — dit is
-  builder-canvas-werk op een pagina waar Bob actief mee bezig is
-  (Sort/Datatype-experiment), dus bewust aan Bob overgelaten i.p.v.
-  door Claude gedaan.** Concreet, per tab van
-  `horecagelegenheden_overzicht_widget.dart` (en de provincie-variant):
-  1. `TextField` boven de `TabBar` invoegen, Local/Page State
-     `zoekterm` (String) via `onChanged` bijwerken.
-  2. Een manier om `categorieFilter` te kiezen (chips/dropdown) — opties
-     dynamisch uit de complete dataset, niet hardcoded.
-  3. Op page/tab-load: `fetchAlleHorecagelegenheden` aanroepen (met de
-     juiste `horcat`/`townid`/`displayId` voor die tab) → resultaat in
-     een Component State-variabele (bv. `alleItemsTabX`).
-  4. De tab's `Generate Dynamic Children`-"Value" ombouwen naar
-     `filterHorecagelegenheden(alleItemsTabX, zoekterm, categorieFilter,
-     '$.titel', '$.categorie')` (exacte JSON-paths per tab checken —
-     kunnen verschillen).
-  5. Verse export + `flutter analyze` om te bevestigen dat
-     `fetchAlleHorecagelegenheden`/`filterHorecagelegenheden` nu
-     daadwerkelijk aangeroepen worden.
+**Stap 2 door Bob afgerond (2026-08-25) voor 5 van de 6 tabs — bevestigd
+via verse export + `flutter analyze` (0 errors):** `TabBar`'s `onTap`
+roept nu per tab (Cultuur/Eetgelegenheden/Overnachten/Uitgaan/
+Verhuur-catering) `fetchAlleHorecagelegenheden` aan met de juiste
+`horcat` (Cultuur `17963`, Eetgelegenheden `34`, Overnachten `17965`,
+Uitgaan `17967`, Verhuur/catering `17968`) + `townid: widget!.plaats!`
++ `displayId: 'services_1'`, en zet het resultaat in een eigen Page
+State-lijst (`alleCultuur`, `alleEetgelegenheden`, `alleOvernachten`,
+`alleUitgaan`, `alleVerhuurCatering`).
+
+**Restpunt bij stap 2, nog open: Activiteiten (tab 0, de al-actieve
+eerste tab bij page-load) heeft nog geen data-fetch.** `onTap` vuurt
+nooit voor een al-actieve tab (zelfde bekende beperking als bij
+Favorieten Tab 1, zie `CLAUDE.md`) — dezelfde actie
+(`fetchAlleHorecagelegenheden` met `horcat: '17969'` → Page State
+`alleActiviteiten`) moet nog toegevoegd worden aan de Scaffold's **On
+Page Load**-trigger. Laagrisico (Actions-tab-wijziging, geen
+widget-insert), kan door Claude of Bob.
+
+**Stappen 3, 4, 6 (widget-wiring: TextField, categorie-filter, lijsten
+herbinden) — geblokkeerd, overgedragen aan Claude voor een latere
+sessie. Bob heeft het geprobeerd (2026-08-25) en gestopt na een
+reeks mislukkingen die wijzen op een structureel probleem met deze
+specifieke pagina, niet op een bedieningsfout:**
+- Een `TextField` invoegen op de `Container` die de `TabBar` bevat
+  geeft een "Replace Child Widget"-dialoog (logisch, `Container` is
+  single-child) — zowel "Replace" als de aangeboden "Wrap in
+  Column/Row/Stack"-optie (een gecombineerde wrap+insert-actie, dus
+  een ander code-pad dan de bekende losse "Wrap Widget"-actie) geven
+  **"Invalid Action" + automatische terugdraai**. Ook een losse
+  "Wrap Widget (Ctrl+B)" op zowel de `Container` als de bovenste
+  `Column` van de pagina gaf hetzelfde. Dit bevestigt het al bekende
+  `CLAUDE.md`-patroon (zie de Event-pagina-notitie) nu ook op een
+  actief-gebruikte pagina, niet alleen een orphan.
+- **Nieuwe, verontrustender bevinding:** een `TextField` toevoegen aan
+  de gewone (niet-single-child) `Column` binnen een tab's `TabBar
+  Page` — waar normaal probleemloos een extra kind bij zou moeten
+  kunnen — **verving in plaats daarvan de complete bestaande inhoud**
+  (`StaggeredView`/`Container`/`HorecagelegenheidoverzichtKaart`
+  verdwenen, alleen het `TextField` bleef over). Dat is geen normaal
+  `Column`-gedrag (een `Column` zou nooit bestaande kinderen moeten
+  laten verdwijnen bij een extra invoeging) — wijst op een dieperliggend,
+  nog niet begrepen probleem met deze pagina's interne staat, niet op
+  een verkeerde klik. **Nog niet uitgezocht waarom.**
+- Bekend gebleven werkende plek: het toevoegen van **acties** (zoals
+  stap 2's `onTap`-aanroepen) via de Actions-tab werkte de hele tijd
+  probleemloos — het probleem zit specifiek bij **widgets toevoegen/
+  herstructureren** in dit deel van de boom, niet bij logica/acties.
+
+**Voor de volgende sessie (Claude), in volgorde:**
+1. Eerst grondig uitzoeken wat er mis is met deze pagina vóór er
+   opnieuw geprobeerd wordt te bouwen — de "Column vervangt zijn
+   kinderen i.p.v. toe te voegen"-bevinding hierboven ruikt naar een
+   dieperliggende inconsistentie (mogelijk gerelateerd aan hoeveel er
+   deze sessie al aan deze pagina veranderd is: 6x een `onTap`-actie
+   toegevoegd, `page`-parameter elders). Eén voorzichtige eerste stap:
+   een verse `flutterflow export-code` + `flutter analyze` op deze
+   pagina om te checken of er al een onderliggende inconsistentie
+   zichtbaar is, vóórdat er weer builder-UI-acties op los gelaten
+   worden.
+2. Zodra widgets weer normaal toegevoegd kunnen worden: bouw het
+   zoekveld + categorie-filter zoals hierboven al uitgewerkt (via
+   Copy/Paste vanaf 1 geconfigureerd `TextField` naar de `Column`
+   binnen elke tab's `TabBar Page`, zie de sessie-notitie/chatgeschiedenis
+   voor het exacte recept — 1x On Change → Update Page State `zoekterm`
+   configureren, dan 6x kopiëren).
+3. Categorie-filter: chips/dropdown, opties dynamisch uit de complete
+   dataset (`alleActiviteiten` etc.) — geen hardcoded lijst.
+4. Elke tab's `StaggeredView`/lijst-databron ombouwen van de rauwe
+   `alleXxx`-lijst naar `filterHorecagelegenheden(alleXxx, zoekterm,
+   categorieFilter, '$.titel', '$.categorie')`.
+5. Verse export + `flutter analyze` om te bevestigen dat
+   `fetchAlleHorecagelegenheden`/`filterHorecagelegenheden` nu
+   daadwerkelijk aangeroepen worden, en dat de 6-tabs-versie + de
+   provincie-paginavariant (`horecagelegenheden_overzicht_provincie_page_widget.dart`,
+   nog helemaal niet aangeraakt) allebei kloppen.
 
 
 *(P2-14 volledig afgerond 2026-08-25 — Custom Function `googleMapsUrl`
 *(P2-14 volledig afgerond 2026-08-25 — Custom Function `googleMapsUrl`
 + Project Component `GoogleMapsIconButton` gebouwd door Claude, op
 + Project Component `GoogleMapsIconButton` gebouwd door Claude, op