Quellcode durchsuchen

P2-15: stadsactiviteitAanmaken-pagina grotendeels af (velden, datumpickers, 3-traps plaats-cascade op Page State)

- Ontwerpbeslissing vastgelegd: plaats-picker op Page State i.p.v. App State
  browse-variabelen; SelectStateDropDownComponent bewust van de pagina af.
- Rechtenmodel: hybride (eigen stadsrechten als snelkoppeling + volledige
  cascade voor iedereen) - corrigeert de oudere spec in het Artifact.
- Nieuw Drupal-endpoint plaatsen_bij_gemeente live op productie.
- API Group kanweg -> productie hernoemd.
- CLAUDE.md: getJsonField niet beschikbaar in Custom Functions;
  pub-get-vereiste voor exportanalyse; relatieve vs absolute API-URL.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob vor 2 Wochen
Ursprung
Commit
8214580b00
1 geänderte Dateien mit 43 neuen und 0 gelöschten Zeilen
  1. 43 0
      CLAUDE.md

+ 43 - 0
CLAUDE.md

@@ -509,6 +509,49 @@ gedeelde logica nodig, maak er een aparte top-level Custom Function
 van (die roep je dan gewoon aan vanuit de andere) i.p.v. een lokale
 van (die roep je dan gewoon aan vanuit de andere) i.p.v. een lokale
 helper te nesten.
 helper te nesten.
 
 
+**`getJsonField()` is NIET beschikbaar binnen een Custom Function —
+wel binnen een Custom Action.** Bevestigd 2026-08-31
+(`filterHorecagelegenheden`): die helper komt uit
+`/flutter_flow/flutter_flow_util.dart`, en dat wordt bij Custom
+*Functions* niet mee-geïmporteerd; het import-blok bovenaan een Custom
+Function is bovendien niet te bewerken. Gevolg: `dart analyze` geeft
+`The function 'getJsonField' isn't defined`. **Fix:** gewone
+Map-toegang gebruiken (`(item is Map ? item : null)?[key]`), en als je
+JSON-Path-achtige argumenten binnenkrijgt eerst de `$.`-prefix
+strippen (`pad.startsWith(r'$.') ? pad.substring(2) : pad`). Werkt voor
+paden van 1 niveau diep, wat in de praktijk vrijwel altijd het geval
+is. Custom **Actions** krijgen `flutter_flow_util.dart` wél
+automatisch, dus daar mag `getJsonField()` gewoon.
+
+**Analysefouten van een verse export zijn vals zolang je geen
+`flutter pub get` in die exportmap hebt gedraaid.** Een kale
+`flutterflow export-code`-map heeft geen `.dart_tool/package_config.json`,
+waardoor `dart analyze` élke package-import als
+`Target of URI doesn't exist: 'package:http/http.dart'` markeert plus
+allerlei vervolgfouten (`getJsonField isn't defined`,
+`ProvincieModelStruct isn't a type`, …). Dat leidt gegarandeerd tot
+verkeerde conclusies over "kapotte" custom code. **Vaste volgorde bij
+het verifiëren van een export:**
+```
+cd /tmp/ff-checkN && fvm flutter pub get && fvm dart analyze lib/
+```
+en tel dan alleen de regels die met `error -` beginnen (een gezond
+project geeft hier ~2000 `info`/`warning`-regels en **0 errors** —
+laat je niet afschrikken door dat totaalgetal).
+
+**API Call-URL: relatief pad hoort bij een API Group, absolute URL bij
+een top-level call.** Bevestigd 2026-08-31 (`PlaatsenBijGemeente`):
+een top-level call aangemaakt mét een relatief pad
+(`/nl/flutterdrup/plaatsen_bij_gemeente.json`) genereert precies dat
+als `apiUrl` — zónder host, dus de call faalt. Binnen een groep hoort
+juist het relatieve pad, want daar plakt FlutterFlow
+`${XGroup.getBaseUrl()}` ervoor. Herkenbaar in de export: een
+group-call is een **instance**-methode (`Future<ApiCallResponse> call(`)
+op een `XGroup`-klasse, een top-level call is **static**
+(`static Future<ApiCallResponse> call(`). (De groep in dit project
+heet sinds 2026-08-31 `productie` i.p.v. `kanweg` → `ProductieGroup`,
+base-URL `https://uitgaanskrant.com`.)
+
 **De Custom Code-editor (Function/Action): tekst selecteren via
 **De Custom Code-editor (Function/Action): tekst selecteren via
 toetsenbord (Ctrl+A, Home+Shift+Ctrl+End) en daarna Delete/Backspace
 toetsenbord (Ctrl+A, Home+Shift+Ctrl+End) en daarna Delete/Backspace
 drukken werkt structureel niet — de selectie is zichtbaar (blauw
 drukken werkt structureel niet — de selectie is zichtbaar (blauw