|
@@ -349,11 +349,64 @@ Uitgaan-pagina (typografie/contrast/spacing), Event-pagina,
|
|
|
HorecagelegenhedenOverzicht, tabel-kaartje-afstemming met
|
|
HorecagelegenhedenOverzicht, tabel-kaartje-afstemming met
|
|
|
slider-kaartje, categorie-tag mag titel/datum niet overstemmen.
|
|
slider-kaartje, categorie-tag mag titel/datum niet overstemmen.
|
|
|
|
|
|
|
|
-**P1-10 · Eigenaar: Onbepaald, onderzoek nodig.** Performance:
|
|
|
|
|
-- Dubbele/onnodige netwerkverzoeken checken (audit, nog te doen).
|
|
|
|
|
-- 6-7 tabbladen laden allemaal meteen hun eigen data bij elke
|
|
|
|
|
- tabwissel/herbouw (TabBarView bouwt alle tabs eager) —
|
|
|
|
|
- `horecagelegenheden_overzicht(_sort_page/_page_data_type)_widget.dart`.
|
|
|
|
|
|
|
+**P1-10 · Eigenaar: Onbepaald.** Performance. **2026-08-05: audit
|
|
|
|
|
+afgerond (Claude, code-niveau), concrete bevindingen:**
|
|
|
|
|
+1. **Eager-TabBarView bevestigd op 4 pagina's, niet alleen de 3 al
|
|
|
|
|
+ genoemde:** Flutter's `TabBarView` bouwt altijd alle tabs meteen
|
|
|
|
|
+ (geen lazy-tabs), dus bij page-load vuren alle tabs hun eigen
|
|
|
|
|
+ `FutureBuilder`-API-call tegelijk af, ook de 5-6 tabs die de
|
|
|
|
|
+ gebruiker nog niet ziet:
|
|
|
|
|
+ - `horecagelegenheden_overzicht_widget.dart`: 6 tabs, elk
|
|
|
|
|
+ `EstablishmentsCall.call(horcat: '<id>', ...)` met een eigen
|
|
|
|
|
+ categorie-id (17969/17963/34/17965/17967/17968 — echt
|
|
|
|
|
+ verschillende calls, geen letterlijke duplicaten).
|
|
|
|
|
+ - `horecagelegenheden_overzicht_sort_page_widget.dart`: 7 tabs,
|
|
|
|
|
+ zelfde patroon.
|
|
|
|
|
+ - `horecagelegenheden_overzicht_page_data_type_widget.dart`: 6
|
|
|
|
|
+ tabs, zelfde patroon.
|
|
|
|
|
+ - **Nieuw gevonden, stond nog niet in de vorige documentatie:**
|
|
|
|
|
+ `home_widget.dart` heeft hetzelfde patroon — 6 tabs, elk met een
|
|
|
|
|
+ eigen `HomeUitgaantabelKaartComponentWidget` → eigen
|
|
|
|
|
+ `HomeTabelCall`-aanroep, dus ook hier 6 gelijktijdige requests bij
|
|
|
|
|
+ het openen van Home (plus 1 losse `HomeUitgaanSliderComponent`
|
|
|
|
|
+ bovenaan, buiten de tabs, geen probleem).
|
|
|
|
|
+2. **`EstablishmentsCall` heeft al `cache: true`** (`api_calls.dart:1458`)
|
|
|
|
|
+ en `ApiCallOptions extends Equatable` met `params`/`headers` in de
|
|
|
|
|
+ `props`-lijst (`api_manager.dart:124-138`) — caching werkt dus
|
|
|
|
|
+ functioneel correct op basis van echte parameterwaarden (geen
|
|
|
|
|
+ reference-equality-bug). Dit voorkomt herhaalde netwerkcalls bij
|
|
|
|
|
+ een **rebuild** van dezelfde tab (bv. na een `setState` elders op de
|
|
|
|
|
+ pagina), maar lost de **initiële burst** van 6-7 gelijktijdige calls
|
|
|
|
|
+ bij eerste page-load niet op — caching helpt pas ná de eerste keer.
|
|
|
|
|
+3. **Nieuwe bevinding: `HomeTabelCall` heeft `cache: false`**
|
|
|
|
|
+ (`api_calls.dart:465`) — in tegenstelling tot de Establishments-
|
|
|
|
|
+ pagina's vuurt Home dus bij *elke* rebuild opnieuw alle 6
|
|
|
|
|
+ tab-requests af, niet alleen bij de eerste page-load. Fix: `cache:
|
|
|
|
|
+ true` zetten in de FlutterFlow API-call-config (Response &
|
|
|
|
|
+ Test-tabblad) — geen codewijziging nodig, low-risk (resultaten zijn
|
|
|
|
|
+ read-only lijstdata, geen sessie-afhankelijke content).
|
|
|
|
|
+4. **Nieuwe bevinding: `GemeentenCall`/`ProvinciesCall` hebben `cache:
|
|
|
|
|
+ false`** (`api_calls.dart:1274/1306`), aangeroepen vanuit
|
|
|
|
|
+ `select_state_drop_down_component_widget.dart`. Dit scherm is het
|
|
|
|
|
+ verplichte eerste scherm na inloggen (`nav.dart:117/124`) én apart
|
|
|
|
|
+ bereikbaar via het drawer-menu (2x, zie het "dubbele blok"-punt bij
|
|
|
|
|
+ P2-7) — elke keer dat het scherm opent, worden beide
|
|
|
|
|
+ provincie/gemeente-lijsten opnieuw over het netwerk opgehaald,
|
|
|
|
|
+ terwijl deze data binnen een sessie feitelijk statisch is. Zelfde
|
|
|
|
|
+ low-risk fix: `cache: true` in de builder, geen codewijziging.
|
|
|
|
|
+5. **Bijvangst, geen performance-impact maar wel opschoon-kandidaat:**
|
|
|
|
|
+ `EstablishmentsNewCall` (`api_calls.dart:845`, `cache: false`) wordt
|
|
|
|
|
+ nergens meer aangeroepen — dode API-call-definitie, toevoegen aan de
|
|
|
|
|
+ P2-7-opschoonlijst.
|
|
|
|
|
+- **Niet opgelost, apart punt voor Bob om te beoordelen:** de
|
|
|
|
|
+ eager-TabBarView-burst zelf (punt 1) is in de FlutterFlow-builder-UI
|
|
|
|
|
+ niet direct te fixen — `cache: true` helpt alleen bij herhaling, niet
|
|
|
|
|
+ bij de eerste gelijktijdige burst. Echte fix vraagt lazy tab-content
|
|
|
|
|
+ (bv. een `IndexedStack` met on-demand `FutureBuilder` per tab-
|
|
|
|
|
+ activatie i.p.v. `TabBarView`), wat een structurele herbouw is —
|
|
|
|
|
+ vermoedelijk custom code nodig, buiten scope van deze audit. Geen
|
|
|
|
|
+ bekend rate-limit-probleem op de Drupal-API, dus mogelijk lage
|
|
|
|
|
+ prioriteit ondanks de N×-overhead.
|
|
|
|
|
|
|
|
**P1-11 · Eigenaar: Onbepaald, onderzoek nodig.**
|
|
**P1-11 · Eigenaar: Onbepaald, onderzoek nodig.**
|
|
|
Responsive/screensize-audit — o.a. het vaste 200×200px-tegelformaat in
|
|
Responsive/screensize-audit — o.a. het vaste 200×200px-tegelformaat in
|
|
@@ -401,3 +454,6 @@ code).
|
|
|
waar 6 zouden volstaan).
|
|
waar 6 zouden volstaan).
|
|
|
- `EventWidget`-route: heraansluiten of definitief schrappen (losse
|
|
- `EventWidget`-route: heraansluiten of definitief schrappen (losse
|
|
|
orphan-route).
|
|
orphan-route).
|
|
|
|
|
+- `EstablishmentsNewCall` (`lib/backend/api_requests/api_calls.dart:845`)
|
|
|
|
|
+ wordt nergens meer aangeroepen — dode API-call-definitie (gevonden
|
|
|
|
|
+ bij de P1-10-performance-audit 2026-08-05).
|