Explorar o código

P2-21 punten 1-4 afgerond (Home + Favorieten responsief), P2-23 compilefout opgevoerd

- Home-component: PagedListView -> PagedMasonryGridView, crossAxisCount 1/1/2/3,
  pagination/pull-to-refresh/beide laadindicatoren intact (verse export geverifieerd)
- Favorieten: beide hardgecodeerde crossAxisCount: 2 nu responsief
- Herbruikbaar recept voor de pagination-blokkade vastgelegd
- P2-23: 3 compile-errors in stadsactiviteit_aanmaken_copy2

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob hai 1 semana
pai
achega
de03493de6
Modificáronse 1 ficheiros con 77 adicións e 84 borrados
  1. 77 84
      TASKS.md

+ 77 - 84
TASKS.md

@@ -2090,6 +2090,27 @@ al afgerond) — dit is een leeg vlak, geen laadprobleem.
 
 ## P2 — features & concept, na livegang
 
+**P2-23 · Eigenaar: Bob — COMPILEFOUT, blokkeert de build.**
+Gevonden 2026-09-02 met `fvm dart analyze lib/` op een verse export:
+drie echte errors, allemaal in `stadsactiviteit_aanmaken_copy2` (een
+tweede kopie van `stadsactiviteitAanmaken`):
+```
+error - stadsactiviteit_aanmaken_copy2/..._widget.dart:1392:35 -
+  Undefined name 'columnMijnStadsrechtenResponse'.   (ook :1401 en :1409)
+```
+De rest van het project is schoon (0 andere errors). Dit is precies het
+patroon uit `CLAUDE.md`: een widget verwijst naar de Backend-Query-
+response van een omhullende `Column`, maar op deze kopie is die query
+niet meegekomen — de referentie hangt in de lucht. `flutterflow
+export-code` loopt er wél doorheen, maar `flutter run`/een release-build
+zal hierop stuklopen.
+**Twee routes:** de wrapper-`Column` op de kopie zijn
+`MijnStadsrechten`-query teruggeven, óf — als `..._copy2` alleen een
+backup is — de pagina weggooien. Zelfde afweging geldt voor de andere
+kopie (`stadsactiviteitAanmakenCopy`), die de vier Property-Override-
+fouten uit P2-22 veroorzaakt.
+
+
 **P2-1 · Eigenaar: Bob — testen in de API, komt terug.** Datum-filter:
 Vandaag / Dit weekend / Deze week.
 
@@ -3573,91 +3594,63 @@ kaarttitels op afbreken/overlopen nakijken. Ook een legitieme uitkomst:
 niet doen — dan is de app herkenbaar op kleur maar mist hij de
 kranten-uitstraling.
 
-**P2-21 · Eigenaar: Claude. Punt 2/3 (Home meerkoloms) is op
-2026-09-01 AFGEROND en live geverifieerd — zie punt 3. Punt 4 en 5 staan
-nog open.** Tabletweergave herschikken i.p.v. uitrekken. Verifiëren op `emulator-5556` (tablet) én
-telefoonformaat. Staat los van P1-11 (labels/overflow, al afgerond).
-
-**Meetgegevens (2026-08-31, Claude).** Breekpunten staan in
-`lib/flutter_flow/flutter_flow_util.dart:378-380`: `kBreakpointSmall`
-479, `kBreakpointMedium` 767, `kBreakpointLarge` 991 (logische px).
-`emulator-5556` is 2560x1600 @ 320dpi → **1280x800 dp liggend**,
-**800x1280 dp staand** (rotatie zit op `USER_ROTATION_LOCKED`; staand
-testen kan met `adb -s emulator-5556 shell wm size 1600x2560`, daarna
-`wm size reset`). Telefoon-referentie: 1080x1920 @ 420dpi → **411x731 dp**.
-
-**1. Horeca-overzicht (gemeente én provincie) — al goed, niets doen.**
-Beide gebruiken een `MasonryGridView` met responsieve `crossAxisCount`
-(1/1/2/3 per breekpunt, o.a. `horecagelegenheden_overzicht_widget.dart:598`).
-Dit is meteen het na te volgen patroon.
-
-**2. Home — gecorrigeerde diagnose. Zit NIET op de Home-pagina zelf.**
-Een eerdere lezing van deze taak ging ervan uit dat Home's tabs hun
-kaarten met `List.generate` in een `Column` bouwen. **Dat klopt niet:**
-de `Column` per tab bevat precies één kind, namelijk het component
-`HomeUitgaantabelKaartComponent`. De kaartenlijst wordt *binnen* dat
-component gebouwd, door een **`PagedListView`**
-(`home_uitgaantabel_kaart_component_widget.dart:132`) met infinite
-scroll. Dáár moet de kolomindeling dus veranderen — en dat is gunstig:
-één wijziging raakt alle 5 de tabs tegelijk (het component wordt
-alleen door `home_widget.dart` gebruikt, 5x).
-
-*(Getest en teruggedraaid op 2026-08-31: de `Column` op Home omzetten
-naar een `StaggeredView` via rechtsklik → Replace werkt technisch prima
-— geen "Invalid Action", het kind blijft behouden — maar levert alleen
-`itemCount: 1` op, dus functioneel een no-op. Volledig teruggedraaid en
-met een verse export bevestigd byte-identiek aan het origineel. Let op
-bij een Replace: de **Scrollable**-instelling van de `Column` gaat
-verloren en moet handmatig terug.)*
-
-**3. AFGEROND 2026-09-01 — Home toont nu 1/1/2/3 kolommen, live
-geverifieerd op een toestel.** Eerste poging (alleen het component
-omzetten) is teruggedraaid omdat de grid niets rendeerde; de echte
-oorzaak lag in de **ouder**, en die is nu ook aangepakt.
-
-**Wat de blokkade was:** Home zet elk tabblad in een **Column met
-"Scrollable" aan** (genereert `SingleChildScrollView`), waardoor de
-hoogte oneindig is. Een `ListView` met `shrinkWrap` overleeft dat, een
-masonry-grid niet — die rendert dan een **leeg vlak** zonder kaarten,
-spinner, foutmelding of overflow. De `TabBarView` zit al in een
-`Expanded`, dus de begrenzing wás er; hij werd alleen weggegooid.
-
-**De drie wijzigingen (alle drie nodig):**
-1. Component `HomeUitgaantabelKaartComponent`: `ListView` →
-   **StaggeredView** (`PagedMasonryGridView`), `Cross Axis Count` als
-   Responsive Value **1/1/2/3**, paginering + pull-to-refresh +
-   beide laadindicatoren ongewijzigd behouden.
-2. Datzelfde component: **Shrink Wrap UIT**.
-3. Home, per tabblad (alle 5): omhullende **Column op "Scrollable" uit**
-   en het component erin op **Expanded**.
-
-**Volgorde-klem (belangrijk als je dit ooit herhaalt):** FlutterFlow
-weigert stap 3 met *"Invalid Action — would have caused a crashing
-error"* zolang de grid onbegrensd is. Oplossing: zet **Shrink Wrap
-tijdelijk AAN**, doe dan alle vijf de tabbladen, en zet Shrink Wrap
-daarna pas weer uit.
-
-**Geverifieerd:** verse export toont `PagedMasonryGridView` met de
-responsieve kolomtelling, **0** `SingleChildScrollView` in
-`home_widget.dart`, en op een echt toestel: tablet 1280dp → **3
-kolommen**, telefoon 411dp → **1 kolom** met exact het oude uiterlijk.
-Alle vijf tabbladen renderen.
-
-*(Onderweg gemeten met een tijdelijke debug-print: `MediaQuery` geeft op
-de tablet 1280.0 dp en op de telefoon 411.4 dp — de breekpunten kloppen
-dus.)*
-
-**4. Favorieten — kleine correctie, los van het bovenstaande.**
-`favorieten_widget.dart:339` en `:663` hebben `crossAxisCount: 2`
-**hardgecodeerd**. Zet dit om naar dezelfde responsieve uitdrukking als
-punt 1. Geen pagination in de weg hier.
-
-**5. De sliderband is géén tabletprobleem — zie P1-38.** Wat wel
-tablet-specifiek is: `viewportFraction: 0.75`
+**P2-21 · Eigenaar: Claude. Punten 1 t/m 4 zijn op 2026-09-01/02
+AFGEROND en met verse export geverifieerd. Alleen punt 5 (sliderband)
+staat nog open, en dat wacht op P1-38.** Tabletweergave herschikken
+i.p.v. uitrekken.
+
+**Breekpunten** staan in `lib/flutter_flow/flutter_flow_util.dart`:
+`kBreakpointSmall` 479, `kBreakpointMedium` 767, `kBreakpointLarge` 991
+(logische px). `emulator-5556` = 1280x800 dp liggend / 800x1280 staand;
+telefoon-referentie 411x731 dp. Het overal toegepaste patroon is
+**1 / 1 / 2 / 3** kolommen.
+
+**Afgerond:**
+1. Horeca-overzicht (gemeente én provincie) — was al goed; dit was het
+   na te volgen patroon.
+2/3. **Home** — het `PagedListView` in `HomeUitgaantabelKaartComponent`
+   is omgezet naar een `PagedMasonryGridView` met responsieve
+   `crossAxisCount`. Eén wijziging raakt alle 5 de Home-tabs. Alle
+   pagination-instellingen zijn intact gebleven/hersteld: infinite
+   scroll (`page: nextPageMarker.nextPageNumber`), pull-to-refresh
+   (`RefreshIndicator` + `waitForOnePageForStaggeredView()`) en beide
+   `SpinKitFadingCircle`-laadindicatoren.
+4. **Favorieten** — beide `crossAxisCount: 2` (tab 1 en tab 2) staan nu
+   op dezelfde responsieve uitdrukking.
+
+**Nog open — punt 5, pas ná P1-38.** `viewportFraction: 0.75`
 (`home_uitgaan_slider_component_widget.dart:287` en
-`p_uitgaan_slider_component_widget.dart:280`) geeft op 1280 dp een
-kaart van 960 dp breed. Verdient dezelfde breekpunt-behandeling
-(bv. 0.75 / 0.5 / 0.35), maar pas ná P1-38.
+`p_uitgaan_slider_component_widget.dart:280`) geeft op 1280 dp een kaart
+van 960 dp breed. Verdient dezelfde breekpunt-behandeling
+(bv. 0.75 / 0.5 / 0.35).
+
+**Nog te doen: visueel narekenen op `emulator-5556`** (tablet, liggend
+én staand via `adb -s emulator-5556 shell wm size 1600x2560`, daarna
+`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).
 
 ---