|
|
@@ -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 →
|