Browse Source

TASKS: 97c/97d afgemeld; zoekgedrag-keuze en ProvinciePageCopy genoteerd

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 8 hours ago
parent
commit
862518cf77
1 changed files with 17 additions and 34 deletions
  1. 17 34
      TASKS.md

+ 17 - 34
TASKS.md

@@ -46,11 +46,7 @@ klopt sinds je 'm las.*
    2026-09-18 op Bob's vraag. Teksten NL+EN staan kant-en-klaar in het blok
    hieronder; alleen nog plaatsen in de builder. Pak dit samen met taak 87 op,
    die overlapt met de regel bij "Uw Horecagelegenheid".
-9. **97c · null-veiligheid herstellen op de provincie-horeca-pagina** —
-   regressie uit taak 97, zie het blok verderop. Klein, maar het is een crash.
-10. **97d · Engelse vertaling van de hint "Zoek op naam"** op diezelfde pagina
-    (sleutel `nm6s2mkp`, `en` is leeg).
-11. ~~97 · zoekveld provincie-horeca~~ — **AF 2026-09-19** (Bob gebouwd,
+9. ~~97 · zoekveld provincie-horeca~~ — **AF 2026-09-19** (Bob gebouwd,
     export-geverifieerd, commit `9344bb7`) — besluit Bob 2026-09-18.
     Zie blok verderop.
 
@@ -6652,38 +6648,25 @@ kranten-uitstraling.
 
 
 
-### 97c · null-veiligheid herstellen na het zoekveld (provincie-horeca)
+### Horeca-overzichten — stand 2026-09-19
 
-*Taak 97 zelf is af (commit `9344bb7`): zoekveld bovenaan, On Change → Rebuild
-Page met 2000 ms debounce, 6× `filterHorecagelegenheden`. Dit is het restpunt.*
+*94, 95, 96, 97, 97c en 97d zijn allemaal af (commits `d9c4ccb`, `32843e9`,
+`9344bb7`, `5473b2a`). Wat er nog ligt:*
 
-**Het probleem.** De binding van het argument `items` levert per tab dit op:
+**Zoekgedrag is nu verschillend tussen de twee pagina's — keuze voor Bob.**
+De provincie-pagina zoekt sinds 2026-09-19 pas **op Enter** (`onFieldSubmitted`),
+omdat de API-call daar rechtstreeks in de `FutureBuilder` zit zonder cache: bij
+realtime zoeken kostte elke toetsaanslag zes calls. De **gemeente**-pagina staat
+nog op **realtime** (`onChanged` + 2000 ms `EasyDebounce`); die filtert lokaal op
+page-state-lijsten en kost dus niets. Functioneel allebei prima, maar twee bijna
+identieke pagina's die anders reageren is verwarrend. Gelijktrekken is één
+handeling: TextField → Actions → trigger-dropdown van *On Change* naar
+*On Submit* (de actie eronder blijft staan).
 
-```dart
-HorecagelegenheidoverzichtCall.items(response.jsonBody)!.toList()
-```
-
-Let op de **`!`**. Vóór taak 97 stond er `...?.toList() ?? []` — null-veilig.
-`ApiManager` geeft bij élke exception een respons met `jsonBody == null`, dus
-`items()` levert dan `null` en de `!` gooit: **de pagina crasht zodra één van de
-zes calls mislukt** (offline, server down). 6× in het bestand.
-
-Oorzaak: de parameter `items` van `filterHorecagelegenheden` is `List<dynamic>`
-(non-nullable), en dan forceert FlutterFlow met `!`. De gemeente-pagina heeft dit
-niet, want die geeft een page-state-lijst door die altijd non-null is.
-
-**De fix — twee kleine stappen in Custom Code → `filterHorecagelegenheden`:**
-1. Bij het argument **`items`**: **Nullable** aanvinken (`List<dynamic>?`).
-2. In de body, de enige plek waar `items` gebruikt wordt (±regel 40):
-   `return items.where((item) {` → `return (items ?? []).where((item) {`
-3. **Ctrl+S** — zonder die toetsaanslag haalt de wijziging de export niet.
-
-De zes bindingen hoeven niet opnieuw: het argument houdt zijn naam, FlutterFlow
-laat de `!` daarna vanzelf weg. De gemeente-pagina blijft werken (een non-null
-lijst past gewoon in een nullable parameter).
-
-**Verificatie:** in een verse export moet
-`grep -c ")!$" <provincie-pagina>_widget.dart` **0** geven (nu 6).
+**`HorecagelegenhedenOverzichtProvinciePageCopy` opruimen · Eigenaar: Bob.**
+Tijdens taak 97 is een kopie van de provincie-pagina ontstaan (vangnet). Hij
+staat in `nav.dart` en in de paginalijst. Weggooien kan zodra je tevreden bent.
+(Claude verwijdert zelf nooit iets — staande regel.)
 
 **Los restpunt (geen eigen nummer, klein):** `PUitgaanPage` zet
 `HeaderButtonsComponent` in de **`title`**-slot van de AppBar, terwijl élke