Procházet zdrojové kódy

CLAUDE.md: drie inzichten uit de sessie van 2026-09-19

- scrollende Column niet-scrollend maken met een onbegrensd kind
  (kip-en-ei, tijdelijke vaste hoogte als uitweg)
- non-nullable List-parameter in een custom function maakt een
  null-veilige binding stil onveilig
- trigger-dropdown wisselen behoudt de acties eronder

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob před 21 hodinami
rodič
revize
92225d015d
1 změnil soubory, kde provedl 37 přidání a 0 odebrání
  1. 37 0
      CLAUDE.md

+ 37 - 0
CLAUDE.md

@@ -2227,6 +2227,20 @@ Volledig doorlopen 2026-09-15 op `EventCurrent`. Wat je moet weten:
   waardoor het lijkt alsof je klik niet landde. Soms is de wijziging tóch
   doorgekomen — verifieer met een export in plaats van opnieuw te klikken.
 
+**Een scrollende `Column` NIET-scrollend maken met een onbegrensd kind: FlutterFlow
+weigert beide volgordes — geef het kind eerst een tijdelijke vaste hoogte.**
+Bevestigd 2026-09-19 (taak 94, `PUitgaanPage`), de tegenhanger van de notitie
+hieronder. Je hebt een kip-en-ei: een `Expanded` mag niet in een scrollende
+Column, en de scroll mag er niet af zolang een kind (hier een
+`PagedMasonryGridView`) een onbegrensde hoogte wil. Beide kliks geven de toast
+*"Invalid Action"*. **Werkende volgorde:** (1) de omhullende Container een vaste
+`Height` geven (500 volstaat) — het canvas toont dan meteen dat de grid rendert;
+(2) Column → *Scrollable* op het kruisje; (3) Container → Expansion → **Expanded**.
+Die tijdelijke hoogte hoef je daarna niet weg te halen: hij verdwijnt vanzelf uit
+de export (het paneel blijft 'm wel tonen — 0 `height:` in het bestand is het
+bewijs). **Symptoom als je dit mist:** de grid rendert een leeg grijs vlak, zonder
+fout in `dart analyze` of `logcat`.
+
 **De toggles van `Gradient` en `Box Shadow` in het Container-paneel reageren NIET
 op browser-automation — gebruik een omweg.** Bevestigd 2026-09-15: ~6 kliks op
 de toggle zelf (track links, track rechts, exacte knoppositie via `zoom`) en op
@@ -2492,6 +2506,20 @@ de sectie toggelt alleen tussen leeg-open en dicht. Wil je een lijst
 normaliseren vóór hij de loop in gaat: dat moet dus **aan de databron**
 gebeuren (de view/het endpoint), niet in de builder.
 
+**⚠️ Een custom function met een NON-nullable `List`-parameter maakt een eerder
+null-veilige binding stil onveilig.** Bevestigd 2026-09-19 (taak 97). De
+Generate-Dynamic-Children-binding stond op `XCall.items(jsonBody)?.toList() ?? []`
+— netjes. Zodra je diezelfde bron als argument aan
+`filterHorecagelegenheden(List<dynamic> items, …)` hangt, genereert FlutterFlow
+`XCall.items(jsonBody)!.toList()`: een **null-check-operator**, omdat de parameter
+non-nullable is. `ApiManager` geeft bij elke exception `jsonBody == null`, dus de
+pagina crasht bij een mislukte call — en `dart analyze` ziet er niets van.
+**Fix (twee kleine stappen, geen herbouw van de bindingen):** vink bij het
+argument **Nullable** aan (`List<dynamic>?`) en vang het in de body op met
+`(items ?? [])`. De bindingen houden hun naam, dus FlutterFlow laat de `!` daarna
+vanzelf weg; aanroepers die al een non-null lijst doorgeven blijven werken.
+**Audit op een verse export:** `grep -c ")!$" <widget>.dart` hoort 0 te geven.
+
 **Een `Text`/`Wrap`-loop over een JSON-veld dat soms een lijst en soms
 een string is, crasht STIL in een profile-build.** Bevestigd 2026-09-06:
 `getJsonField(item, r'$.veld').toList()` op een String gooit
@@ -3248,6 +3276,15 @@ diezelfde klik-plus-typ nog een keer. Hetzelfde geldt voor de "+"-connector
 tussen twee acties: de eerste klik opent alleen het menu (Add Action / Add
 Conditional / …), de klik op *Add Action* zelf hoort in de volgende aanroep.
 
+**De trigger van een bestaande actieketen wisselen kan met de dropdown — de
+acties eronder blijven staan.** Bevestigd 2026-09-19: een zoekveld van *On
+Change* naar *On Submit* (zoeken pas na Enter i.p.v. bij elke toetsaanslag) is
+één klik in de trigger-dropdown bovenaan de Actions-tab; de `Rebuild Page`-actie
+eronder bleef ongemoeid. Export: `onChanged` + `EasyDebounce` verdwijnen en er
+komt `onFieldSubmitted: (_) async { safeSetState(() {}); }` voor terug. Handig
+wanneer een lijst zijn data uit een `FutureBuilder` haalt zónder cache — dan kost
+realtime zoeken een volledige API-ronde per toetsaanslag.
+
 **Een boolean page state omklappen vanuit een knop: `Update Page State` →
 veld → Select Update Type **"Toggle Value"**.** Naast Set Value en Clear/Reset
 Value staat die optie er gewoon; je hoeft dus geen conditionele actie te bouwen