Przeglądaj źródła

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 2 tygodni temu
rodzic
commit
8214580b00
1 zmienionych plików z 43 dodań i 0 usunięć
  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
 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
 toetsenbord (Ctrl+A, Home+Shift+Ctrl+End) en daarna Delete/Backspace
 drukken werkt structureel niet — de selectie is zichtbaar (blauw