|
|
@@ -1294,6 +1294,29 @@ er echt een ander widget (bv. een `Text`-label) tussen: dupliceer een bestaande
|
|
|
`Text` en versleep 'm in de tree, of accepteer de volgorde. Verwijderen van de
|
|
|
ongewenste kopie gaat gewoon via rechtsklik → "Remove Widget".
|
|
|
|
|
|
+**Een bestaande actie in een conditionele tak krijgen: Copy Action Chain →
|
|
|
+Delete Action → Add Conditional → Paste in de tak — en tel daarna de
|
|
|
+parameters.** Werkend recept, 2026-09-20 drie keer gebruikt (ongepubliceerde
|
|
|
+node mag niet naar een lege `EventCurrent` navigeren). Een Conditional splitst
|
|
|
+de keten, dus de bestaande actie móet een tak in; opnieuw opbouwen kost je alle
|
|
|
+bindingen, plakken niet. Volgorde: ⋮ naast de trigger → *Copy Action Chain* → ⋮
|
|
|
+op de actie → *Delete Action* → "+" → *Add Conditional* → conditie zetten → in
|
|
|
+de TRUE-tak de nieuwe actie → in de FALSE-tak **Paste Action(s)**.
|
|
|
+⚠️ **Een geplakte/heropgebouwde Navigate kan stil één parameter kwijtraken** —
|
|
|
+op `MijnAanmeldingen` bleef `nid` staan en verdween `horecaid`, zonder
|
|
|
+foutmelding en zonder dat de Issues-teller bewoog (beide zijn nullable, dus
|
|
|
+`serializeParam` compileert gewoon). Tel na élke ingreep de parameters in een
|
|
|
+verse export, niet in het paneel.
|
|
|
+**De conditie zelf hoort een bool custom function te zijn, geen JSON-Path-
|
|
|
+binding.** Een JSON-Path krijgt type *Json* en dan biedt de operatorlijst geen
|
|
|
+vergelijking met een letterlijke waarde; bind je de respons rechtstreeks, dan
|
|
|
+komt er `if (getJsonField(...))` uit — een `dynamic` als `bool` zonder
|
|
|
+null-check, die compileert en pas bij runtime crasht. Geef de functie het
|
|
|
+**rauwe loop-item** mee (Available Options *No Further Changes*, geen pad), zet
|
|
|
+het argument op type JSON en het return-type op **Boolean met Nullable uit** —
|
|
|
+dan is er ook geen "Default Variable Value" nodig. Voorbeeld in dit project:
|
|
|
+`isOngepubliceerd(dynamic item)` in `custom_functions.dart`.
|
|
|
+
|
|
|
**Een `Navigate To`-actie naar een ANDERE pagina laten wijzen wist stil alle
|
|
|
parameter-bindingen — zet ze altijd opnieuw.** Bevestigd 2026-09-11 (taak 18,
|
|
|
twee plekken): na "Select Page" om te zetten van de ene naar de andere pagina
|
|
|
@@ -2071,6 +2094,15 @@ bevestigde pogingen stoppen en aan Bob vragen — geef het exacte pad
|
|
|
**Bij verifiëren:** een gepagineerde lijst genereert
|
|
|
`noItemsFoundIndicatorBuilder:`, geen `if (x.isEmpty)` — grep je alleen op
|
|
|
`isEmpty`, dan lijkt een geslaagde wijziging ten onrechte mislukt.
|
|
|
+ ⚠️ **Widget Type biedt alleen *Image* of *Component* — géén Text** (bevestigd
|
|
|
+ 2026-09-20 door Bob). Een lege lijst die moet uitleggen wáárom hij leeg is,
|
|
|
+ gaat dus via een component. Dat staat er sinds die datum als
|
|
|
+ **`LegeLijstComponent`** (`lib/shared/lege_lijst_component/`): Icon
|
|
|
+ `event_busy` + gecentreerde `Text` op `bodyMedium`/`secondaryText`, met één
|
|
|
+ **required** String-parameter `tekst`. Hergebruiken, niet opnieuw bouwen —
|
|
|
+ ook op de plekken waar nu nog een kaal `logo800px.png`/applogo als lege staat
|
|
|
+ staat. **Let op:** een parameterwaarde is een letterlijke string, geen
|
|
|
+ i18n-sleutel, dus zo'n melding krijgt géén globe en dus geen EN-vertaling.
|
|
|
|
|
|
**Patroon: lege/ontbrekende afbeeldings-URL laat de app crashen.**
|
|
|
`CachedNetworkImage` gooit een **synchrone** `ArgumentError` bij het
|