|
|
@@ -54,8 +54,46 @@ geblokkeerd (alleen errors doen dat, en niet eens allemaal). Vijf soorten:
|
|
|
| **Auth Page Setup** — *"Logged In Page and Entry Page cannot be the same"* | 1 | Beide staan op Home (`nav.dart`: `appStateNotifier.loggedIn ? HomeWidget() : HomeWidget()`). **Bewuste keuze** sinds 2026-09-04, zie `CLAUDE.md` — FlutterFlow's melding is generiek advies, geen fout |
|
|
|
| **Custom Code Dependencies** — *"deprecated package flutter_html"* | 1 | `flutter_html` in `pubspec.yaml` (r. 65), gebruikt door de custom widget `FromHTML` |
|
|
|
|
|
|
-Niets hiervan blokkeert de livegang. Wil je de lijst echt leeg: de eerste twee
|
|
|
-groepen zijn het werk (36 Value Keys zetten, en de geneste scrollables opruimen).
|
|
|
+### Uitgezocht 2026-09-23: waar de twee grootste groepen vandaan komen
|
|
|
+
|
|
|
+**Het grootste deel zit in DODE kopie-paginas.** Een aangeklikte *Primary Scroll*-warning
|
|
|
+landde op **`mijnProfielCopy3`**, en de export bevestigt het patroon:
|
|
|
+
|
|
|
+| | levend | dood |
|
|
|
+|---|---|---|
|
|
|
+| component-instanties zonder Value Key | 29 | 7 |
|
|
|
+| `SingleChildScrollView` (de Primary-Scroll-bron) | 10 | 12 |
|
|
|
+
|
|
|
+Van de levende `SingleChildScrollView`s is **`mijnProfiel` de enige die ook lijsten bevat**
|
|
|
+(3 scrollende `Column`s met 5 `ListView.builder`s erin). **Alle andere Primary
|
|
|
+Scroll-warnings komen dus uit wegwerp-code**: `mijnProfielCopy`/`Copy2`/`Copy3`/`Copy4`,
|
|
|
+`home_copy`, `PUitgaanPageCopy`/`Copy2`/`Copy3`, `favorietenCopy`,
|
|
|
+`selectprovinciegemeenteCopy`, plus de componenten `FilterBalkComponentCopy`,
|
|
|
+`FilterBalkKanweg` en `FotoboekGridComponentCopy` — 13 stuks, die allemaal al op de
|
|
|
+opruimlijst staan (P2-7 / 114 / FOTOBOEK).
|
|
|
+
|
|
|
+**Advies: ruim eerst die 13 op.** Eén actie, nul risico voor levende code, en daarmee
|
|
|
+verdwijnt het leeuwendeel van beide groepen. Pas daarna is de rest de moeite waard.
|
|
|
+
|
|
|
+**Waarom de meldingen er staan**
|
|
|
+- *Unique Key*: Flutter koppelt een widget bij een rebuild aan zijn state via zijn `key`.
|
|
|
+ Zonder key matcht hij op positie+type, dus bij herordenen/filteren kan state bij het
|
|
|
+ verkeerde item belanden. ⚠️ Verwacht er geen functionele winst van: een Value Key op een
|
|
|
+ component-instantie **reset een gepagineerde lijst niet** (zie `CLAUDE.md`), en deze
|
|
|
+ kaarten hebben nauwelijks eigen state.
|
|
|
+- *Primary Scroll*: er is één `PrimaryScrollController` per route, en elke scrollable die
|
|
|
+ `primary` aan heeft claimt die. FlutterFlow zet **Primary standaard aan** bij elke `Column`
|
|
|
+ met *Scrollable*; zit daar een `ListView` in die dat ook doet, dan vechten ze erom.
|
|
|
+ Merkbaar bij scroll-restauratie en "tik op de statusbalk om omhoog te scrollen".
|
|
|
+
|
|
|
+**De fix (per plek):** widget selecteren -> rechterpaneel -> onder *Scrollable* de toggle
|
|
|
+**Primary** uit. Zet hem uit op de scrollable die **niet** de hoofdscroller is — bij een
|
|
|
+`ListView` met `shrinkWrap: true` in een scrollende `Column` is dat de ListView. Genereert
|
|
|
+`primary: false`; het enige bestaande voorbeeld in dit project staat in
|
|
|
+`EvenementInfo` (`SingleChildScrollView(primary: false)`).
|
|
|
+Voor *Unique Key*: instantie selecteren -> sectie **Value Key** (net boven *Component
|
|
|
+Properties*) -> binden aan het `nid` van het loop-item (JSON Path `$.nid`). 29x, dus fors
|
|
|
+werk voor weinig opbrengst.
|
|
|
|
|
|
## 👤 BOB — OPEN, in volgorde van wat de livegang blokkeert
|
|
|
|