Jelajahi Sumber

CLAUDE.md: pagination-Replace-recept, responsive-value-valkuil, copy/paste-dood-spoor, versie-conflict-dialoog, endpoint-verificatierecept

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 1 Minggu lalu
induk
melakukan
0ce0289f4d
2 mengubah file dengan 80 tambahan dan 22 penghapusan
  1. 76 0
      CLAUDE.md
  2. 4 22
      TASKS.md

+ 76 - 0
CLAUDE.md

@@ -1372,6 +1372,82 @@ gratis doorstart, elke reload kost een herhaling van stap 1.
   P0-3). Vuistregel blijft: 1-2 pogingen (incl. 1 reload), dan
   overdragen met exacte stappen — niet blijven proberen.
 
+**Widget kopiëren/plakken werkt NIET via browser-automation — dood
+spoor, niet opnieuw proberen.** Bevestigd 2026-09-01: "Copy Widget" +
+"Paste Widget" uit het ⌘+K-palet, én de sneltoetsen Ctrl+C/Ctrl+V op
+een geselecteerde tree-node, schrijven allebei niets weg — niet tussen
+twee pagina's en ook niet binnen dezelfde pagina. Het palet-item
+"Paste Widget" highlight wel bij hover, maar zowel een klik als Enter
+laat de doel-node onveranderd (geen foutmelding, header blijft op
+"Synced"). Gevolg: een kapotte tab herstellen door het intacte blok van
+een zusterpagina te kopiëren is geen optie — je moet ter plekke
+opnieuw opbouwen (Backend Query → Generate Dynamic Children →
+parameters binden → actie). **Wat wél werkt:** rechtsklik op een
+component in de "Search pages or components..."-lijst → **"Duplicate
+Component"** (maakt een volledige, werkende kopie inclusief Backend
+Query en pagination), en **"Copy Action Chain"/"Paste Action(s)"** voor
+losse actieketens (zie de valkuil daarbij elders in dit bestand).
+
+**Een `ListView`/`GridView` met pagination van widgettype wisselen —
+Replace weigert eerst.** Rechtsklik → Replace geeft *"Can't replace a
+widget that has pagination enabled. Go to the 'Backend Query' pane and
+remove pagination before proceeding."* Werkend recept (bevestigd
+2026-09-01/02 op `HomeUitgaantabelKaartComponent`, eerst uitgeprobeerd
+op een wegwerp-duplicaat):
+1. Backend Query → Edit → **Enable Infinite Scroll uit** → de
+   `page`-variabele wordt rood/ongeldig → **Remove** → Confirm.
+2. Rechtsklik → Replace → kies het nieuwe type. **De Backend Query,
+   "Enable Pull to Refresh" én béide laadindicatoren (first page en
+   next page) overleven de omzetting ongeschonden** — alleen de
+   `page`-variabele moet je terugzetten.
+3. Backend Query → Edit → Infinite Scroll weer **aan** → **Set
+   Additional Variable** → Parameter Name `page` → Value-icoontje →
+   **"Next Page Index (StaggeredView)"** (het veld toont daarna
+   "Pagination - Next Page Number", precies zoals het origineel) →
+   Confirm.
+- **Kies StaggeredView, niet GridView**, voor kaarten van ongelijke
+  hoogte: een `GridView` dwingt een vaste `childAspectRatio` af,
+  een `StaggeredView` genereert een `PagedMasonryGridView` dat
+  variabele hoogtes aankan. Dat is ook het patroon dat op
+  `HorecagelegenhedenOverzicht` al draait.
+
+**Responsieve kolommen zetten: `Cross Axis Count` → icoontje naast het
+label → Source "Responsive Value".** Dat bouwt zelf de vier
+breekpunt-takken (`< kBreakpointSmall` / `< Medium` / `< Large` /
+anders); vul de waarden in en klap "Return Type (Optional)" één keer
+open vóór Confirm. **Kritieke valkuil: sleep de dialoog aan het
+handvat bovenaan omhoog vóórdat je "Responsive Value" kiest.** De
+dialoog is te hoog voor het venster, waardoor de onderste twee waarden
+én de Confirm-knop wegvallen — en slepen ná het invullen sluit de
+dialoog en gooit je invoer weg (2x gebeurd 2026-09-02). Een lege
+tak levert `return 0;` op, wat bij een MasonryGridView een assertion
+gooit en de lijst leeg laat: altijd alle vier vullen.
+
+**Dialoog "FlutterFlow Version Out of Date" = iemand anders heeft
+tegelijk in het project gewerkt.** Verschijnt zodra je een edit
+probeert terwijl je browsersessie op een oudere projectversie staat;
+de melding vraagt om verversen en dat is ook de enige route (knop
+"Refresh", daarna ±60s herladen). Zie je hem: ga er niet van uit dat
+jouw laatste export nog de actuele staat weergeeft — draai er een
+verse. Bevestigd 2026-09-02, toen Bob en Claude onafhankelijk hetzelfde
+component omzetten.
+
+**Een taxonomie-/categorie-id verifiëren zonder het te gokken: test het
+endpoint rechtstreeks.** Bevestigd nuttig 2026-09-02 (een `horcat` was
+naar een niet-bestaande categorie gezet; de tab bleef leeg zonder
+foutmelding). De establishments-view heeft een `townid` nodig, anders
+geeft élke categorie `[]`:
+```
+curl -s -u bob:serhii "https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel_establishments.json?horcat=<id>&townid=<tid>&display_id=services_1&page=0"
+```
+Een geldige `townid` haal je op via
+`plaatsen.json` (provincies) → `plaatsen.json?limit_levels=2&provincieid=<pid>`
+(gemeenten) → `plaatsen_bij_gemeente.json?gemeenteid=<gid>` (plaatsen).
+Arnhem (`25434`) is een handige testplaats met content in vrijwel elke
+categorie. Vergelijk het aantal resultaten én de `categorie`-labels
+tussen kandidaat-id's; dat maakt in één keer hard welk id de bedoelde
+inhoud levert.
+
 **Een nieuwe rij toevoegen aan een lijst met bestaande, vergelijkbare
 rijen (bv. nog een `ListTile` in een menu): dupliceer een bestaande rij
 i.p.v. Insert Widget te gebruiken.** Rechtsklik de bestaande node →

+ 4 - 22
TASKS.md

@@ -3644,28 +3644,10 @@ van 960 dp breed. Verdient dezelfde breekpunt-behandeling
 `wm size reset`) en op telefoonformaat. De code klopt, het oog nog niet
 gecontroleerd.
 
-**Herbruikbaar recept — pagination-blokkade omzeilen.** Rechtsklik →
-Replace weigert met *"Can't replace a widget that has pagination
-enabled"*. Werkwijze die werkt, uitgeprobeerd op een wegwerp-kopie
-vóór de live ingreep:
-1. Backend Query → Edit → **Enable Infinite Scroll uit** → de
-   `page`-variabele **Remove** (die is dan ongeldig) → Confirm.
-2. Rechtsklik → Replace → **StaggeredView** (niet GridView: die vraagt
-   een vaste `childAspectRatio`, en deze kaarten hebben ongelijke
-   hoogtes). De Backend Query, pull-to-refresh en béide
-   laadindicatoren overleven dit ongeschonden.
-3. `Cross Axis Count` → icoontje naast het label → Source **Responsive
-   Value** → vult zelf 4 breekpunt-takken; waarden 1/1/2/3 invullen,
-   "Return Type (Optional)" één keer openklappen, Confirm.
-4. Backend Query → Edit → Infinite Scroll weer **aan** → **Set
-   Additional Variable** → Parameter Name `page` → Value-icoontje →
-   **Next Page Index (StaggeredView)** (heet in het veld daarna
-   "Pagination - Next Page Number") → Confirm.
-- **Valkuil:** de Set-from-Variable-dialoog is te hoog voor het
-  venster; de onderste twee waarden en Confirm vallen weg. Sleep hem
-  aan het handvat bovenaan omhoog **vóór** je Responsive Value kiest —
-  slepen ná het invullen sluit de dialoog en gooit je invoer weg
-  (2x gebeurd).
+**Het recept om de pagination-blokkade te omzeilen staat nu in
+`CLAUDE.md`** (Replace weigert bij pagination; infinite scroll uit, `page`
+verwijderen, Replace, daarna `page` → Next Page Index terugzetten),
+samen met de valkuil van de te hoge Set-from-Variable-dialoog.
 
 ---