Bläddra i källkod

Taak 127-D en 127-G klaar: evenementformulier vult zich, Kopie ook op profiel

127-D: zes tekstvelden van uitgaansevenementAanmaken hangen aan
kloonTekst(kloonBron, '<sleutel>'); de vier waarden die evenementCreate echt
verstuurt (entree_tid, logo_fid, categorie_tids, fotos_fids) gaan via On Page
Load naar hun page states, omdat een voorgeselecteerde dropdown geen onChanged
vuurt. Beide dropdowns tonen nu ook hun gekloonde waarde. Op emulator-5554
bewezen met een echt evenement; datum blijft bewust leeg.

Restpunt: de logo-preview blijft leeg omdat createLogoUrl van het type
Image Path is en die dialoog een custom function niet accepteert. Het logo
zelf gaat wel mee bij indienen.

127-G: dezelfde Kopie-knop staat nu ook op mijnProfiel, in beide lijsten.
Die zijn al op type gefilterd, dus zonder type-conditie.

CLAUDE.md: twee nieuwe valkuilen vastgelegd — een geplakte actieketen verliest
alle loop-item- en page-parameter-bindingen (en blokkeert dan de export), en
een ListTile laat zich niet in een Row wrappen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 15 timmar sedan
förälder
incheckning
aae2dfe87b
2 ändrade filer med 75 tillägg och 2 borttagningar
  1. 39 0
      CLAUDE.md
  2. 36 2
      TASKS.md

+ 39 - 0
CLAUDE.md

@@ -4523,6 +4523,45 @@ bekende valkuil: bevat de keten een Custom Action met een *Action Output
 Variable Name*, dan moet je die na het plakken hernoemen (dubbele declaratie in
 het model).
 
+**⚠️ Maar een geplakte keten verliest élke binding die naar een LOOP-ITEM of een
+PAGE PARAMETER wijst — ook binnen dezelfde pagina.** Bevestigd 2026-09-21 (taak
+127-G, twee keer). Wat overleeft: de actiestructuur, de conditional, de
+API-callkeuze en bindingen aan **App State**. Wat sneuvelt: `getJsonField(<loop-
+item>, …)`-waarden (het JSON-pad blijft staan, de *bron* niet — je ziet een rood
+veld met een uitroepteken) en alles wat aan `widget!.<parameter>` hing. Bij het
+plakken naar een andere pagina waar die page parameter niet bestaat, levert dat
+bovendien een *Conditional Action — improperly set* op.
+- ⚠️ **En dat BLOKKEERT de export project-breed** (`Status: 400`), dus laat een
+  half geplakte keten nooit staan. Kom je er niet meteen uit: ⋮ naast de trigger
+  → **Delete Action Chain**, export testen (moet meteen weer groen zijn), en dan
+  pas rustig opnieuw opbouwen.
+- **Kosten-baten:** bij ~4 acties is plakken-plus-repareren ongeveer even veel
+  werk als opnieuw opbouwen. Plakken wint alleen als de keten vooral App
+  State-bindingen heeft (zoals de uitlogketen hierboven).
+- **Na het plakken altijd langs:** (1) de *Action Output Variable Name* — die is
+  identiek aan het origineel en geeft "Action in Button has an output variable
+  with the same name as that of another widget"; hernoem hem **eerst**, want de
+  vervolgacties verwijzen ernaar; (2) de conditie, die na het hernoemen nog naar
+  de oude naam wijst; (3) elke *Update App State* die de oude output-naam leest;
+  (4) de Navigate-parameters.
+
+**⚠️ Een `ListTile` laat zich NIET in een `Row` wrappen — FlutterFlow weigert het
+met de generieke "Invalid Action"-toast.** Bevestigd 2026-09-21: een `ListTile`
+heeft geen intrinsieke breedte, dus in een Row zou hij onbegrensd worden en de
+builder draait de actie terug (de toast blijft staan en de selectie springt naar
+de pagina-root, waardoor het lijkt of je klik niet landde). **Wil je een knop
+naast/achter een lijstregel: wrap in een `Column` en zet de knop eronder** — dat
+gaat wel in één keer, en het sluit aan bij hoe de kaarten op `MijnAanmeldingen`
+het al doen. Het recept daarna: "+" op de nieuwe `Column`-rij in de tree →
+Insert-dropdown → `Button` typen → de kaart onder *Top Results*.
+- **De InkWell om zo'n ListTile is géén tree-node** (FlutterFlow genereert die
+  omdat de tile een On Tap heeft), dus zoeken op `InkWell` geeft "No Results" —
+  de `ListTile` zelf is de node die je wrapt.
+- ⚠️ **Het contextmenu van een tree-rij opent op wisselende hoogte**, dus doe
+  rechtsklik + `zoom` in de ene aanroep en klik *Wrap Widget* pas in de
+  volgende. Blind op de onthouden y klikken landde hier drie keer op *Insert
+  Widget*, wat een heel ander paneel opent. `Ctrl+B` als sneltoets werkte niet.
+
 **Een verse `ListTile` komt met `title: 'Title'` én `subtitle: 'Subtitle'` — die
 subtitle moet je expliciet leegmaken, anders staat er letterlijk "Subtitle" in de
 app.** De Subtitle-sectie valt bij een 935px-venster onder de vensterrand; klap

+ 36 - 2
TASKS.md

@@ -891,8 +891,42 @@ De i18n-sleutel `g4pbs1et` is vertaald (`nl: Kopie` / `en: Copy`).
 Color-veld valt onder de vensterrand; klap eerst *Button Text*, *Alignment* en
 *Padding* in (één klik per tool-aanroep).
 
-**Nog te doen:** 127-D (evenementformulier, 14 bindingen), 127-E (activiteiten,
-na 124), 127-F (`kloonBron` wissen op 4 plekken).
+**127-D IS KLAAR EN OP HET TOESTEL BEWEZEN** (2026-09-21). Het
+evenementformulier vult zich; getest met "TEST tijdzone Claude 13sep" op
+`emulator-5554`: titel, zaak (Café de Vriendschap), categorie
+(Activiteiten › Bijeenkomst) en entree-optie staan voorgevuld, datum en
+einddatum bewust leeg, "Evenement indienen" zichtbaar, 0 exceptions.
+
+Zes tekstvelden hangen rechtstreeks aan `Initial Value`:
+`kloonTekst(kloonBron, '<sleutel>')` voor `titel`, `omschrijving`,
+`website_url`, `tickets_url`, `toelichting_entree`, `entree_prijs`.
+
+De vier waarden die de create-actie écht verstuurt gaan via **On Page Load** →
+de bestaande *Update Page State*-actie, uitgebreid met vier velden:
+`createEntreeTid` = `kloonTekst(…, 'entree_tid')`, `createLogoFid` =
+`kloonTekst(…, 'logo_fid')`, `createCategorieTids` = `kloonLijst(…,
+'categorie_tids')`, `createFotosFids` = `kloonLijst(…, 'fotos_fids')`.
+Dat is nodig omdat een voorgeselecteerde dropdown geen `onChanged` vuurt.
+Daarnaast is de weergave van beide dropdowns voorgevuld via *Initial Option
+Value(s)*.
+
+⚠️ **Restpunt 127-D: de logo-preview blijft leeg.** `createLogoUrl` is van het
+type **Image Path**, en in die Set-Variable-dialoog staat `kloonTekst` **grijs**
+(niet selecteerbaar) — het bekende Image-Path-typeprobleem uit `CLAUDE.md`. Het
+logo zelf gaat wél mee bij indienen (`logo_fid` staat er). Oplossing zou zijn:
+het page-state-veld omzetten van Image Path naar String, maar dan moet de
+`Image`-widget die eraan hangt (regel ~2767 in de export) opnieuw gebonden
+worden. Keuze aan Bob.
+
+**127-G IS KLAAR** (2026-09-21): dezelfde Kopie-knop staat nu ook op
+`mijnProfiel`, in béide lijsten — onder *Mijn evenementen* en onder
+*Mijn stadsactiviteiten*. Omdat die lijsten al op type gefilterd zijn
+(`type: 'go_out_event'` resp. `'activity'`) is er géén type-conditie nodig:
+elke knop navigeert rechtstreeks naar het juiste formulier.
+
+**Nog te doen:** 127-E (activiteitenformulier vullen, na 124), 127-F
+(`kloonBron` wissen op 4 plekken), plus de twee restpunten hierboven
+(knopkleur op `MijnAanmeldingen`, logo-preview).
 
 **Wens Bob (2026-09-20):** op elke kaart in *Mijn aanmeldingen* een knop **Kopie**.
 Eén tik opent het aanmaakformulier volledig ingevuld; de gebruiker vult de datum