Prechádzať zdrojové kódy

P1-19 volledig afgerond: 9 kale-Row-tag-overflows omgezet naar Wrap via 'Replace' (niet Wrap Widget+Remove Widget, zie nieuwe CLAUDE.md-valkuil). P2-7 gecorrigeerd: UitgaantabelKaartComponent is dode/orphan code, niet gedeeld tussen Home/PUitgaanPage zoals eerder aangenomen.

bob 1 mesiac pred
rodič
commit
7c2b8efa4a
2 zmenil súbory, kde vykonal 47 pridanie a 114 odobranie
  1. 21 0
      CLAUDE.md
  2. 26 114
      TASKS.md

+ 21 - 0
CLAUDE.md

@@ -617,6 +617,27 @@ styling nodig. Werkt niet op iconen embedded als `suffixIcon` van een
 `TextFormField` (bv. Login-pagina wis-/toon-wachtwoord-iconen — geen
 losse wrapbare tree-node).
 
+**Een `Row`/`Column` met gegenereerde kinderen (`List.generate(...)`)
+van widget-type wisselen (bv. Row → Wrap tegen tag-overflow): gebruik
+rechtsklik → "Replace", NOOIT "Wrap Widget" gevolgd door "Remove
+Widget" op de oude node.** Bevestigd 2026-08-12 (live pair-sessie,
+`HomeUitgaantabelKaartComponent`): de "herhaal-over-lijst"-configuratie
+(`List.generate`, incl. de parameter-binding zoals `categorieTag:
+categorieitemItem`) hangt als eigenschap ván de omringende Row/Column
+zelf, niet van het kind-template. "Wrap Widget" wrapt de Row in een
+nieuwe Wrap (dubbele nesting, lost niets op) en de daaropvolgende
+"Remove Widget" op de overbodige oude Row **verwijdert de hele
+lijst-generatie mee** — resultaat is een enkel statisch,
+ongebonden kind-widget i.p.v. een item per lijst-element (functionele
+regressie, geen crash/foutmelding die het verraadt). Herstel: Ctrl+Z
+(werkte binnen dezelfde tab/sessie, geen garantie na page-reload).
+**Bevestigd werkende, veilige methode:** rechtsklik direct op de Row
+→ **Replace** → kies Wrap. Dit wisselt alleen het widget-type,
+`List.generate` + alle parameter-bindingen blijven intact (bevestigd
+via verse export op meerdere componenten). Zelfde controlestap als
+altijd: ná de wijziging verifiëren dat `List.generate(...)` nog in de
+export staat, niet alleen dat de tree er goed uitziet.
+
 **Widget toevoegen: gebruik de kleine inline "Insert Widget", niet de
 grote centrale "Insert"-modal.** Rechtsklik op een Widget Tree-rij →
 **"Insert Widget"** (of het kleine "+"-icoon naast een tree-node) opent

+ 26 - 114
TASKS.md

@@ -813,120 +813,23 @@ zustervondst op `PUitgaanSliderKaartComponent:179`, zelfde
   oorzaak is de ontbrekende scroll-wrapper hierboven, niet de
   tekstkolom-breedtekeuze.
 
-**P1-19 · Eigenaar: Bob (Wrap Widget-menuklik registreert niet, zie
-hieronder — Claude geblokkeerd).** Nieuwe, nog niet eerder gedocumenteerde
-`RenderFlex overflowed`-crash op de **Home-pagina**, live bevestigd met
-een **volledige, verse stack trace** (2026-08-09, via de
-`setsid`-interactieve-`flutter run`-sessie uit CLAUDE.md, 2x identiek
-reproduceerbaar bij elke fresh app-start/hot-restart):
-```
-A RenderFlex overflowed by 113 pixels on the right.
-Row:file:///.../lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart:301:50
-constraints: BoxConstraints(0.0<=w<=111.5, 0.0<=h<=152.0)
-size: Size(111.5, 40.0)
-```
-**Root cause (code-niveau bevestigd,
-`home_uitgaantabel_kaart_component_widget.dart:299-301`):** een `Row`
-(`mainAxisSize: MainAxisSize.max`) met `children: List.generate(categorieitem.length,
-...)` — voor elk element in de dynamische `categorie`-lijst van een
-evenement wordt een `TagCategorieComponentWidget`-pilletje in de Row
-gezet, **zonder `Wrap`, zonder horizontale scroll, zonder
-`Expanded`/`Flexible` per tag**. Zodra een evenement 2+ categorieën
-heeft (of één lange categorienaam), passen de pilletjes niet in de
-~111px die de Row van zijn ouder krijgt. Dit is dezelfde soort bug als
-de al bekende ontbrekende-Flexible-patronen (P1-3/P1-11), maar op een
-**ander component** dan beide daar genoemde — niet eerder in dit
-bestand vermeld. **Fix (builder):** component
-`HomeUitgaantabelKaartComponent` → Widget Tree → de Row met de
-`TagCategorieComponentWidget`-kinderen (rond de hierboven genoemde
-code) → wrappen in een `Wrap`-widget (i.p.v. `Row`) zodat tags naar een
-volgende regel overlopen, of een horizontale `SingleChildScrollView`
-eromheen zodat ze scrollen i.p.v. overflowen — zelfde afweging als
-Bob eerder maakte voor vergelijkbare tag-rijen elders. **Nog niet
-gecheckt of hetzelfde patroon (kale `Row` van `List.generate`-tags,
-geen wrap) ook voorkomt op de niet-Home-varianten van dit component
-(`PUitgaantabelKaartComponent`/`kaartTabelUitgaanComp`/
-`kaartTabelUitgaanSComp`, zie ook de P2-7-opschoonnotitie over die
-laatste twee) — bij het oppakken van deze taak even meenemen.**
-- **Bevestigde zustervondst (2026-08-09, Claude, verse stack trace):**
-  hetzelfde patroon zit ook op **`PUitgaanSliderKaartComponent`**
-  (ánder component dan de drie hierboven genoemde) — categorie-tag-
-  badge rechtsonder op de afbeelding:
-  ```
-  A RenderFlex overflowed by 2.4 pixels on the right.
-  Row:file:///.../lib/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart:179:38
-  ```
-  Zelfde oorzaak (`Row` met `List.generate(categorie.length, ...)`,
-  regel 178-179, `mainAxisSize: MainAxisSize.min`, geen Wrap/Expanded).
-  Kleiner overflow (2.4px, minder zichtbaar dan Home's 113px) maar
-  zelfde onderliggende bug — zelfde fix-aanpak (Wrap i.p.v. Row).
-- **Scope definitief bevestigd veel breder (2026-08-12, Claude,
-  code-audit + live herbevestiging van het Home-exemplaar op een verse
-  build): hetzelfde kale-`Row`-met-`List.generate`-zonder-Wrap-patroon
-  zit in minstens 8 andere, live bereikbare plekken** — dit was expliciet
-  de "nog niet gecheckt"-vraag die deze taak zelf al openliet. Overal
-  identiek: `Row(mainAxisSize: MainAxisSize.max, children:
-  List.generate(<lijst>.length, ...))` zonder `Wrap`/scroll/`Expanded`
-  per item.
-  - `event_current_widget.dart:501` — categorie-tags **op EventCurrent
-    zelf** (de evenement-detailpagina's eigen kop-tags, niet een
-    subcomponent).
-  - `evenement_horecagelegenheid_widget.dart:221` (categoriehoreca),
-    `:1388` (afhaalopties), `:1477` (afhaalbetaalopties), `:1539`
-    (bezorgtin) — 4 aparte instanties in **hetzelfde bestand** als
-    P1-15's knoppen-crash, embedded op `EventCurrent` en
-    `HorecagelegenheidCurrent`.
-  - `horecagelegenheid_current_widget.dart:710` — cryptocoins-Row op de
-    horecagelegenheidpagina zelf (Bezorgen-tab).
-  - `uitgaantabel_kaart_component_widget.dart:261` — gebruikt
-    rechtstreeks op zowel **Home** als **PUitgaanPage**
-    (`UitgaantabelKaartComponentWidget(...)` in beide widgetbestanden).
-  - `p_uitgaantabel_kaart_component_widget.dart:307` — gebruikt op
-    **PUitgaanPage**.
-  - (`kaart_tabel_uitgaan_comp_widget.dart:176`,
-    `kaart_tabel_uitgaan_s_comp_widget.dart:208`,
-    `kaart_slider_uitgaan_s_comp_widget.dart:246` hebben het patroon
-    ook, maar hun aanroeppad loopt uitsluitend via
-    `uitgaan_tabel_component`/`_small`/`slider_uitgaan_component_small_current`,
-    die op hun beurt nergens buiten `lib/kanweg/` geïnstantieerd worden
-    — **niet live bereikbaar**, dus geen prioriteit, hooguit
-    meenemen bij een eventuele latere opschoning/hergebruik.)
-  - `evenement_component_widget.dart:284` heeft het patroon ook, maar
-    `EvenementComponent` wordt alleen gebruikt door de orphan
-    `EventWidget`-route (zie P2-7) — pas relevant als die route ooit
-    weer aangesloten wordt.
-  - **Praktisch gevolg voor de fix-volgorde:** dit is geen
-    "1-2 rijen aanpassen"-taak meer maar een terugkerend
-    FlutterFlow-generatiepatroon over minstens 6 live bereikbare
-    plekken. Overweeg met Bob of dit github-issue-gewijs 1-voor-1
-    (zoals nu gepland) of als bulk-sessie aangepakt wordt — de
-    builder-stap is overal identiek (Wrap Widget → Wrap), dus als het
-    Wrap-Widget-menu-item straks wél lukt (zie blocker hieronder), is
-    herhaling op de overige 5 plekken puur mechanisch werk.
-- **Poging door Claude (2026-08-09), geblokkeerd — geen wijziging
-  aangebracht.** De juiste `Row`-node (kind `tagCategorieComponent`,
-  binnen `Container` → sibling van de image-`Stack`) was betrouwbaar
-  te selecteren via de Widget Tree (zelfde kalibratietruc als
-  CLAUDE.md beschrijft: klik op nominale y-positie landde structureel
-  63px lager, dus y-63 gebruikt — dat werkte hier wél consistent,
-  in tegenstelling tot de "niet-constante offset" die P1-15 blokkeerde).
-  Rechtsklik → contextmenu opende betrouwbaar met **"Wrap Widget
-  (Ctrl+B)"** zichtbaar op exact geverifieerde coördinaten (bevestigd
-  met `zoom`). Maar **de klik op dat menu-item registreert niet** — 3x
-  geprobeerd op de exacte tekst-coördinaten (menu's positie verschilt
-  wel steeds licht per keer geopend, maar telkens opnieuw met `zoom`
-  geverifieerd vóór de klik) + 1x de `Ctrl+B`-sneltoets direct op de
-  geselecteerde Row — geen van alle opende een wrap-type-dialoog of
-  wijzigde de tree (geen nieuwe parent-node, geen dubbele widget). Een
-  van de pogingen landde net naast het menu en deselecteerde terug naar
-  de root-component (geen schade, gewoon opnieuw moeten selecteren).
-  **Nieuw exemplaar van het bekende "menu-actie-klik registreert niet
-  zichtbaar"-patroon**, nu ook bevestigd op "Wrap Widget" specifiek
-  (niet eerder in CLAUDE.md genoemd voor dit menu-item). **Concreet voor
-  Bob:** component `HomeUitgaantabelKaartComponent` → Widget Tree →
-  `ListView` → `Container` → `Row` → `Container` (2e kind, na de
-  image-`Stack`) → `Row` (bevat `tagCategorieComponent` als enige kind)
-  → rechtsklik → **Wrap Widget (Ctrl+B)** → kies **Wrap** i.p.v. Row.
+*(P1-19 volledig afgerond 2026-08-12 avond — live pair-sessie, Bob
+builder + Claude verse-export-verificatie per stap. Alle 9 live
+bereikbare kale-Row-met-`List.generate`-tag-overflows omgezet naar
+`Wrap` (rechtsklik Row → **Replace** → Wrap — niet "Wrap Widget" +
+"Remove Widget", zie CLAUDE.md voor de valkuil/uitleg): Home
+(`HomeUitgaantabelKaartComponent`), `PUitgaanSliderKaartComponent`,
+`EventCurrent`, `EvenementHorecagelegenheid` (4x: categoriehoreca/
+afhaalopties/afhaalbetaalopties/bezorgtin), `HorecagelegenheidCurrent`
+(cryptocoins), `PUitgaantabelKaartComponent`. Alle 9 bevestigd via
+verse `flutterflow export-code` + een afsluitende volledige
+codebase-sweep op het patroon (geen gemiste live plekken meer,
+2 resterende treffers bleken `Column` i.p.v. `Row` — niet dit
+bugpatroon). **Correctie tijdens de sessie:** de taak noemde ook een
+losstaand `uitgaantabel_kaart_component_widget.dart` als "gebruikt op
+zowel Home als PUitgaanPage" — dat klopte niet, dit is orphan/dode
+code (nergens geïnstantieerd), verplaatst naar P2-7's opschoonlijst.
+Uit deze lijst verwijderd.)*
 
 **P1-20 · Eigenaar: Onbepaald.** Home toont weer een werkende
 "Terug"-knop naast de hamburger — **regressie t.o.v. P2-9-bijvangst**
@@ -1265,6 +1168,15 @@ code).
 **P2-7 · Eigenaar: Bob.** Opschonen:
 - Merge `kaartTabelUitgaanComp` + `kaartTabelUitgaanSComp` — Bob doet
   dit zelf ("ik kijk er zelf naar").
+- `lib/uitgaanspaginas/uitgaantabel_kaart_component/uitgaantabel_kaart_component_widget.dart`
+  (klasse `UitgaantabelKaartComponentWidget`, géén Home-/P-prefix) —
+  **dode/orphan code, bevestigd 2026-08-12** tijdens P1-19: bestaat wel
+  lokaal in de repo maar wordt nergens in de codebase geïnstantieerd
+  (bevestigd `grep`, en bevestigd in de builder zelf: Bob kon het
+  component niet vinden om te openen). Eerdere aanname in dit bestand
+  dat dit "gebruikt wordt op zowel Home als PUitgaanPage" was fout —
+  de daadwerkelijk live componenten daar zijn `HomeUitgaantabelKaartComponent`
+  resp. `PUitgaantabelKaartComponent` (los, wel actief).
 - `lib/kanweg` opnieuw leegmaken indien teruggekomen na een latere
   export-pull, plus eventuele nieuwe losse dode componenten in
   `lib/evenement/`.