|
@@ -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
|