Browse Source

P2-6: werkend pad gevonden — herbouwen van de pagina is niet nodig

Drie extra tests op HorecagelegenhedenOverzichtCopy, nadat Bob bevestigde
dat de ConditionalBuilder-tabs ook bij hem weigeren:

- Wrap Widget -> Column op de ConditionalBuilder: geweigerd (Invalid
  Action). Die route is dicht.
- Insertie in de ROOT-Column van de pagina (die de Container met de
  TabBar bevat): werkt. Export bevestigt Scaffold > Column > [Container,
  nieuw widget], 6 tabs en 6 kaartbindingen intact, 0 verwijderde regels.
- Een eigenschap wijzigen van een widget BINNEN een ConditionalBuilder-
  tab: werkt (mainAxisSpacing 12 -> 13 op tab 1, exportgeverifieerd).

De blokkade geldt dus alleen voor het toevoegen/herstructureren van
widgets in zo'n tak, niet voor bindings en acties. Daarmee kan stap 3 als
één zoekveld boven de TabBar (zoals oorspronkelijk gepland) en zijn stap
4 en 6 puur binding-werk.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 1 week ago
parent
commit
5ada7aad39
1 changed files with 80 additions and 39 deletions
  1. 80 39
      TASKS.md

+ 80 - 39
TASKS.md

@@ -1137,15 +1137,12 @@ gelegenheden mét evenementen was élk bezorgveld leeg — dat waren
 poppodia en cafés, dus geen representatieve steekproef, maar het maakt
 poppodia en cafés, dus geen representatieve steekproef, maar het maakt
 wel de vraag scherp of dit een handvol zaken betreft of honderden.
 wel de vraag scherp of dit een handvol zaken betreft of honderden.
 
 
-**P1-6 restpunt (2026-09-04):** de drie Bezorgen-tab-velden van Minor-2
+*(P1-6 restpunt vervallen 2026-09-04 — Bob. De drie Bezorgen-tab-velden
 kregen bij het binden automatisch een Default Variable Value met de
 kregen bij het binden automatisch een Default Variable Value met de
-**veldnaam** erin — `valueOrDefault<String>(..., 'afhaalopties')`,
-`'betaalopties'` en `'bezorgdin'` (die laatste nog met een d, terwijl het
-veld `bezorgtin` heet). De `!= null`-guard ervoor vangt het normale geval
-af, dus dit slaat alleen toe bij een lege array `[]` i.p.v. `null` — in
-een steekproef van 59 zaken nooit voorgekomen. Cosmetisch, laag risico:
-Default Variable Value leegmaken op die drie widgets in
-`horecagelegenheid_current_widget.dart` (regels ~1164, ~1384, ~1423).
+veldnaam erin (`valueOrDefault<String>(..., 'afhaalopties')` e.d.), maar
+het veld is in de builder niet leeg te maken én de tekst bereikt de
+gebruiker nooit: de `!= null`-conditie ervoor blokkeert de widget al bij
+lege data. Geen actie nodig.)*
 
 
 *(P1-6 grotendeels afgerond 2026-08-16 t/m 2026-08-18 — letterlijke
 *(P1-6 grotendeels afgerond 2026-08-16 t/m 2026-08-18 — letterlijke
 veldnaam i.p.v. nette placeholder bij ontbrekende data
 veldnaam i.p.v. nette placeholder bij ontbrekende data
@@ -2289,6 +2286,48 @@ gedaan, zie het kader hieronder; stappen 3/4/6 staan nog open).
 > dus bevestigd "lukt Claude niet via automation", **niet** bewezen "kan
 > dus bevestigd "lukt Claude niet via automation", **niet** bewezen "kan
 > in FlutterFlow niet". In Bob's eigen browser is het het proberen waard.
 > in FlutterFlow niet". In Bob's eigen browser is het het proberen waard.
 >
 >
+> **VERVOLG DEZELFDE SESSIE — er is een werkend pad gevonden, herbouwen
+> is NIET nodig.** Nadat Bob bevestigde dat de ConditionalBuilder-tabs
+> ook in zijn eigen browser weigeren, zijn er nog drie dingen getest op
+> dezelfde kopie:
+> 1. **`Wrap Widget` → `Column` op de `ConditionalBuilder`: geweigerd**
+>    met "Invalid Action ... we've undone it for you". Die route is dus
+>    dicht, net als insertie in de If-tak.
+> 2. **Insertie in de ROOT-`Column` van de pagina (die de `Container`
+>    met de `TabBar` bevat): WERKT.** Een widget landt daar netjes als
+>    tweede kind, en de export bevestigt het: `Scaffold > Column > [
+>    Container(TabBar), <nieuw widget> ]`, alle 6 tabs en 6
+>    kaartbindingen intact, **0 verwijderde regels** in de diff. Insert
+>    Widget voegt achteraan toe; naar bóven de TabBar krijg je 'm door de
+>    node in de tree op de `Column`-rij te droppen (drop = positie 0).
+> 3. **Een eigenschap wijzigen ván een widget bínnen een
+>    ConditionalBuilder-tab: WERKT.** `Main Axis Spacing` van de
+>    `StaggeredView` in tab 1 (Cultuur) van 12 naar 13 gezet;
+>    exportgeverifieerd (`mainAxisSpacing: 13.0` op alleen die ene, de
+>    andere vijf nog 12). De blokkade geldt dus **uitsluitend voor het
+>    toevoegen/herstructureren van widgets** in zo'n tak, niet voor
+>    bindings, waarden of acties.
+>
+> **Gevolg voor het bouwplan:** stap 3 hoort niet per tab maar als
+> **één zoekveld (+ categoriefilter) in de root-`Column` boven de
+> `TabBar`** — precies wat de oorspronkelijke stap 3 hierboven al
+> voorschreef ("Eén TextField boven de TabBar die de op dat moment
+> actieve tab filtert"). Stap 4 en 6 zijn puur binding-werk op de
+> bestaande `StaggeredView`s en zijn dus gewoon uitvoerbaar. De
+> 6x `zoektermXxx`/`categorieFilterXxx`-page-state is daarmee
+> overgedimensioneerd: met één gedeeld veld is één set genoeg, de rest
+> kan blijven staan en ongebruikt blijven.
+>
+> **Nog niet geverifieerd:** dat de root-`Column`-insertie ook op de
+> **live** pagina lukt. De kopie erfde de ConditionalBuilder-blokkade,
+> dus ze gedragen zich vermoedelijk hetzelfde — maar test het daar
+> opnieuw vóór je op het goede pad vertrouwt.
+>
+> **Sporen van de test op de kopie** (blijven staan, Claude verwijdert
+> niets): een losse `TextField` onderaan tab 0, een `Text` "Hello World"
+> onderaan de root-`Column`, en `mainAxisSpacing: 13` i.p.v. 12 op de
+> `StaggeredView` van tab 1.
+
 > **Praktisch gevolg voor stap 3/4/6:** op deze pagina is **alleen tab 0
 > **Praktisch gevolg voor stap 3/4/6:** op deze pagina is **alleen tab 0
 > een kale `Column`**; tabs 1 t/m 5 zitten allemaal in een
 > een kale `Column`**; tabs 1 t/m 5 zitten allemaal in een
 > `ConditionalBuilder`. Claude kan het zoekveld dus wel op tab 0
 > `ConditionalBuilder`. Claude kan het zoekveld dus wel op tab 0
@@ -3831,15 +3870,19 @@ laten alleen de eerste landen.
 
 
 ---
 ---
 
 
-**P2-16 · Eigenaar: Bob** (klein). Tabnamen gelijktrekken met de site.
-Home: app heeft Uitgaan/Activiteiten/Cultuur/Films/Jeugd, site heeft
-Uitgaan/Stadsactiviteiten/Cultuur&Info → "Activiteiten" wordt
-"Stadsactiviteiten", "Cultuur" wordt "Cultuur&Info" (Films en Jeugd
-mogen blijven; de app mag fijnmaziger zijn, zolang gedeelde namen
-kloppen). Gelegenheiddetail: app heeft Info/Links/Bezorgen, site heeft
-Info/Opening/Map → openingstijden en kaart terug als eigen tab, "Links"
-onder Info. Let op: `evenement_horecagelegenheid` noemt dezelfde tab al
-wél "Openingstijden" — die twee schermen spreken elkaar nu tegen.
+*(P2-16 afgerond 2026-09-04 — Bob, builder. Home-tab "Cultuur" heet nu
+**"Cultuur & Info"**, gelijk aan de site. **Bewuste afwijking van het
+oorspronkelijke voorstel:** "Activiteiten" wordt **niet** hernoemd naar
+"Stadsactiviteiten" — Bob houdt het op Activiteiten. Films en Jeugd
+blijven ook ongewijzigd; de app mag fijnmaziger zijn dan de site.
+De tweede helft (gelegenheiddetail `Info/Links/Bezorgen` tegenover de
+site's `Info/Opening/Map`) is niet opgepakt en staat hieronder los.)*
+
+**P2-16b · Eigenaar: Bob** (rest van P2-16). Op de gelegenheiddetail
+heeft de app `Info / Links / Bezorgen`, de site `Info / Opening / Map`.
+Openingstijden en kaart verdienen een eigen tab, Links kan onder Info.
+Let op: `evenement_horecagelegenheid` noemt dezelfde tab al wél
+"Openingstijden" — die twee schermen spreken elkaar nu tegen.
 
 
 **P2-22 · Eigenaar: Bob (P2-15-werk; blokkeert de export NIET).**
 **P2-22 · Eigenaar: Bob (P2-15-werk; blokkeert de export NIET).**
 Vier openstaande fouten in het Issues-paneel, stand 2026-09-03. Geen
 Vier openstaande fouten in het Issues-paneel, stand 2026-09-03. Geen
@@ -3906,28 +3949,26 @@ vervallen: Bob heeft `stadsactiviteitAanmakenCopy` en
 compilefouten uit het oude P2-23 verdwenen — die taak is geschrapt.)*
 compilefouten uit het oude P2-23 verdwenen — die taak is geschrapt.)*
 
 
 
 
-**P2-18 · Eigenaar: Claude** (mechanisch, klein). Menu-iconen
-gelijktrekken tussen het Gemeente- en het Provincie-blok in
-`drawer_component_widget.dart`. **Geïnventariseerd 2026-09-04 — het zijn
-3 verschillen, niet 2:**
-
-| Categorie | Gemeente-blok | Provincie-blok |
-|---|---|---|
-| Uitgaan | `music_note_outlined` | `music_note_outlined` ✅ |
-| Activiteiten | `flagCheckered` | `sports_score` ❌ |
-| Cultuur | `article_sharp` | **`piedPiperAlt`** ❌ |
-| Films | `movie_outlined` | `movie_outlined` ✅ |
-| Jeugd | `emoji_people` | `child` ❌ |
-| Horeca | `restaurant_sharp` | `restaurant_sharp` ✅ |
-
-`Icons.piedPiperAlt` is het Pied Piper-logo (FontAwesome, uit de serie
-Silicon Valley) — dat is los van consistentie gewoon fout en het meest
-urgente van de drie. Merk op dat `flagCheckered`, `piedPiperAlt` en
-`child` FontAwesome-namen zijn, de rest Material.
-
-**Stond eerder geparkeerd tot na P0-11** ("vervalt grotendeels als de
-twee lijsten samengevoegd worden") — die samenvoeging is 2026-09-04 door
-Bob afgewezen, dus deze taak blijft volledig staan.
+**P2-18 · Eigenaar: Bob — grotendeels afgehandeld 2026-09-04, 2 punten
+open (Bob: "zo houd ik het" — alleen oppakken als hij erop terugkomt).**
+Menu-iconen in `drawer_component_widget.dart`, Gemeente- tegenover
+Provincie-blok. Stand na Bob's ronde, geverifieerd via verse export:
+
+| Categorie | Gemeente | Provincie | |
+|---|---|---|---|
+| Uitgaan | `music_note_outlined` | `music_note_outlined` | ✅ |
+| Activiteiten | `flagCheckered` | `sports_score` | ❌ nog verschillend |
+| Cultuur | `piedPiperAlt` | `piedPiperAlt` | ⚠️ gelijk, maar zie hieronder |
+| Films | `movie_outlined` | `movie_outlined` | ✅ |
+| Jeugd | `emoji_people` | `emoji_people` | ✅ |
+| Horeca | `restaurant_sharp` | `restaurant_sharp` | ✅ |
+
+⚠️ **Bij Cultuur heeft de verkeerde kant gewonnen:** `article_sharp`
+(krant) is vervangen door **`piedPiperAlt`**, het bedrijfslogo van Pied
+Piper uit de HBO-serie *Silicon Valley* (een FontAwesome-merkicoon). Dat
+staat nu dus op **beide** plekken in plaats van nergens. Terugzetten is
+één swatch: `article_sharp` past bij "Cultuur & Info" én bij het
+krantenmerk. Bob is hierop gewezen en houdt het voorlopig zo.
 
 
 **P2-19 · Eigenaar: Bob.** `nav.dart`:129 stuurt een ingelogde
 **P2-19 · Eigenaar: Bob.** `nav.dart`:129 stuurt een ingelogde
 gebruiker naar het provincie/gemeente-keuzescherm en een uitgelogde
 gebruiker naar het provincie/gemeente-keuzescherm en een uitgelogde