Преглед изворни кода

127-E en 127-F af: kloon vult nu ook het activiteitenformulier

127-E (activiteitenformulier voorvullen)
- On Page Load -> Update Page State uitgebreid van 6 naar 8 velden:
  createLogoUrl = kloonBeeld(kloonBron,'logo_url') en
  createFotosUrls = kloonBeelden(kloonBron,'fotos_urls').
- Initial Option Value op vijf dropdowns, zodat de gekloonde keuze ook
  zichtbaar is: categorieen/provincie/entree aan App State (die bestaan al
  bij de eerste build), gemeente/plaats aan page state (die zitten achter
  een Visibility-conditie en bouwen pas na de On-Page-Load-safeSetState).
- Op mijnProfiel hing de gemeenteTid-navigatieparameter aan apiResultvpn
  (de On-Page-Load-call) i.p.v. aan apiResultAct van de Kopie-knop zelf;
  dat gaf stil gemeenteTid="null" en een lege plaats-cascade. Gefixt.

127-D restpunt (logo-/fotopreview) opgelost
- Twee nieuwe custom functions met ImagePath als returntype:
  kloonBeeld (Image Path) en kloonBeelden (Image Path + Is List). Daarmee
  is geen typewijziging van de page states nodig; op beide aanmaakpagina's
  tonen logo en foto's nu een preview bij een kloon.

127-F (kloonBron wissen)
- Update App State -> Clear Value op alle vier de "nieuw aanmaken"-ingangen
  (3x mijnProfiel, 1x favorieten), zodat een vers formulier leeg is.

Geverifieerd: verse export, dart analyze 0 errors, en op emulator-5556
(profile-build) end-to-end getest. Ingediende kloon gaf STATUS 200 met
categorie_tids, logo_fid, fotos_fids en entree_tid compleet (nid 222823).
bob пре 14 часа
родитељ
комит
6cb5a2f3b2

+ 80 - 64
TASKS.md

@@ -1123,13 +1123,20 @@ Dat is nodig omdat een voorgeselecteerde dropdown geen `onChanged` vuurt.
 Daarnaast is de weergave van beide dropdowns voorgevuld via *Initial Option
 Daarnaast is de weergave van beide dropdowns voorgevuld via *Initial Option
 Value(s)*.
 Value(s)*.
 
 
-⚠️ **Restpunt 127-D: de logo-preview blijft leeg.** `createLogoUrl` is van het
-type **Image Path**, en in die Set-Variable-dialoog staat `kloonTekst` **grijs**
-(niet selecteerbaar) — het bekende Image-Path-typeprobleem uit `CLAUDE.md`. Het
-logo zelf gaat wél mee bij indienen (`logo_fid` staat er). Oplossing zou zijn:
-het page-state-veld omzetten van Image Path naar String, maar dan moet de
-`Image`-widget die eraan hangt (regel ~2767 in de export) opnieuw gebonden
-worden. Keuze aan Bob.
+✅ **Restpunt 127-D (logo-/fotopreview) is OPGELOST** (2026-09-22). Geen
+typewijziging nodig geweest: er zijn twee custom functions bij gekomen met
+**ImagePath** als returntype — `kloonBeeld(bron, sleutel)` → *Image Path* en
+`kloonBeelden(bron, sleutel)` → *Image Path + Is List*. Die staan in de
+Set-Variable-dialoog wél gewoon selecteerbaar. Op **beide** aanmaakpagina's is
+in de On-Page-Load → Update Page State nu `createLogoUrl` =
+`kloonBeeld(kloonBron,'logo_url')` en `createFotosUrls` =
+`kloonBeelden(kloonBron,'fotos_urls')` gezet. De bestaande guards
+(`!= null && != ''` resp. `.length > 0`) blijven werken, want de functies geven
+`''` / `[]` terug als er niets te klonen valt.
+**Les voor later:** ImagePath/VideoPath/AudioPath staan gewoon in de
+return-type-dropdown van een Custom Function — een String-functie aan een
+Image-Path-veld binden lukt niet, maar een functie *van het juiste type*
+schrijven lost het in één keer op.
 
 
 **127-G IS KLAAR** (2026-09-21): dezelfde Kopie-knop staat nu ook op
 **127-G IS KLAAR** (2026-09-21): dezelfde Kopie-knop staat nu ook op
 `mijnProfiel`, in béide lijsten — onder *Mijn evenementen* en onder
 `mijnProfiel`, in béide lijsten — onder *Mijn evenementen* en onder
@@ -1137,16 +1144,13 @@ worden. Keuze aan Bob.
 (`type: 'go_out_event'` resp. `'activity'`) is er géén type-conditie nodig:
 (`type: 'go_out_event'` resp. `'activity'`) is er géén type-conditie nodig:
 elke knop navigeert rechtstreeks naar het juiste formulier.
 elke knop navigeert rechtstreeks naar het juiste formulier.
 
 
-**127-E opnieuw bevestigd op het toestel (2026-09-21):** de Kopie-knop onder
-*Eigen activiteiten* op `mijnProfiel` navigeert netjes naar
-`stadsactiviteitAanmaken`, maar het formulier is **helemaal leeg** (titel,
-categorie, plaats). Dat is geen regressie — `stadsactiviteit_aanmaken_widget.dart`
-heeft simpelweg nog 0 treffers op `kloonBron`, terwijl het evenementformulier er
-14 heeft.
+**127-E IS KLAAR** (2026-09-22): het activiteitenformulier vult zich nu net zo
+volledig als het evenementformulier — negen tekstvelden, vijf dropdowns, logo- en
+fotopreview. Zie het eigen blok hieronder.
 
 
-**Nog te doen:** 127-E (activiteitenformulier vullen, na 124), 127-F
-(`kloonBron` wissen op 4 plekken), plus de twee restpunten hierboven
-(knopkleur op `MijnAanmeldingen`, logo-preview).
+**Nog te doen:** alleen nog het restpunt **knopkleur** op `MijnAanmeldingen`
+(de Kopie-knop is nog FlutterFlow-rood `primary`). 127-E en 127-F zijn af
+(2026-09-22), de logo-/fotopreview ook.
 
 
 **Wens Bob (2026-09-20):** op elke kaart in *Mijn aanmeldingen* een knop **Kopie**.
 **Wens Bob (2026-09-20):** op elke kaart in *Mijn aanmeldingen* een knop **Kopie**.
 Eén tik opent het aanmaakformulier volledig ingevuld; de gebruiker vult de datum
 Eén tik opent het aanmaakformulier volledig ingevuld; de gebruiker vult de datum
@@ -1326,77 +1330,89 @@ selecteert de dropdown wél de juiste waarde maar verstuurt de create-actie leeg
 De page states worden pas bij het indienen gelezen, dus die mogen gewoon in
 De page states worden pas bij het indienen gelezen, dus die mogen gewoon in
 On Page Load — daar speelt het timingprobleem niet.
 On Page Load — daar speelt het timingprobleem niet.
 
 
-#### 127-E · Activiteitenformulier voorvullen · Eigenaar: Claude — bezig (2026-09-22, preview logo/foto's)
+#### 127-E · Activiteitenformulier voorvullen · ✅ AF (2026-09-22)
+
+Geverifieerd in een verse export, `dart analyze` 0 fouten.
 
 
-**Af en geverifieerd in een verse export (0 analyse-fouten):**
 - **On Page Load → Update Page State** (Action 3, ná de bestaande
 - **On Page Load → Update Page State** (Action 3, ná de bestaande
-  `gemeenteVoorselectie`-conditional) met zes velden:
+  `gemeenteVoorselectie`-conditional) met acht velden:
   `createProvincieID`→`provincie_tid`, `createPlaatsID`→`plaats_tid`,
   `createProvincieID`→`provincie_tid`, `createPlaatsID`→`plaats_tid`,
   `createEntreeTid`→`entree_tid`, `createLogoFid`→`logo_fid`,
   `createEntreeTid`→`entree_tid`, `createLogoFid`→`logo_fid`,
   `createCategorieTids`→`categorie_tids` (kloonLijst),
   `createCategorieTids`→`categorie_tids` (kloonLijst),
-  `createFotosFids`→`fotos_fids` (kloonLijst).
+  `createFotosFids`→`fotos_fids` (kloonLijst),
+  `createLogoUrl`→`logo_url` (**kloonBeeld**),
+  `createFotosUrls`→`fotos_urls` (**kloonBeelden**).
 - **Initial Value op negen TextFields**: `titel`, `omschrijving`, `adres_straat`,
 - **Initial Value op negen TextFields**: `titel`, `omschrijving`, `adres_straat`,
   `adres_postcode`, `organisator`, `contact`, `website_url`,
   `adres_postcode`, `organisator`, `contact`, `website_url`,
   `toelichting_entree`, `entree_prijs`. (Datum bewust niet — je kloont juist om
   `toelichting_entree`, `entree_prijs`. (Datum bewust niet — je kloont juist om
   een nieuwe datum te kiezen.)
   een nieuwe datum te kiezen.)
+- **Initial Option Value op vijf dropdowns**, zodat de gebruiker de gekloonde
+  keuze ook *ziet*: `DropDownCategorieen` = `kloonLijst(kloonBron,
+  'categorie_tids')`, `DropDownProvincie` = `kloonTekst(kloonBron,
+  'provincie_tid')`, `DropDownEntree` = `kloonTekst(kloonBron,'entree_tid')` —
+  die drie bestaan al bij de eerste build en moeten dus aan **App State**
+  hangen, niet aan page state. `DropDownGemeente` = `createGemeenteID` en
+  `DropDownPlaats` = `createPlaatsID` mogen wél page state, want die zitten
+  achter een Visibility-conditie en worden pas ná de On-Page-Load-`safeSetState`
+  voor het eerst gebouwd.
 - **`gemeenteTid`-navigatieparameter** op beide Kopie-knoppen
 - **`gemeenteTid`-navigatieparameter** op beide Kopie-knoppen
   (`MijnAanmeldingen` Action 4 en `mijnProfiel` Action 3), gebonden aan
   (`MijnAanmeldingen` Action 4 en `mijnProfiel` Action 3), gebonden aan
   `apiResult… → JSON Body → $.gemeente_tid`. `gemeenteVoorselectie()` geeft die
   `apiResult… → JSON Body → $.gemeente_tid`. `gemeenteVoorselectie()` geeft die
   parameter voorrang, dus `createGemeenteID` klopt bij een kloon en de
   parameter voorrang, dus `createGemeenteID` klopt bij een kloon en de
   plaats-dropdown wordt zichtbaar.
   plaats-dropdown wordt zichtbaar.
+  ⚠️ **Valkuil die hier één keer toesloeg:** op `mijnProfiel` stond die binding
+  eerst op `apiResultvpn` — de output van de On-Page-Load-call
+  (`MijnHorecagelegenheden`), niet van de Kopie-knop zelf. Dat compileert
+  gewoon, geeft stil `gemeenteTid = "null"` en dus een lege plaats-cascade.
+  Controleer bij zo'n binding altijd de **naam** van de action output, niet
+  alleen het JSON-pad. De bronnenlijst rendert daar leeg tot je de hover-truc
+  gebruikt; zoekterm `apiResult` + hover toont de drie outputs wél.
+
+**Volledig af**: zowel de indiening (alle waarden komen uit page state) als de
+weergave (tekstvelden, dropdowns, logo- en fotopreview).
+
+**Op het toestel bewezen (2026-09-22, profile-build x86_64 op emulator-5556,
+account `bobcity`):** Kopie op *Eigen activiteiten* → formulier met titel,
+omschrijving, drie categorieën, provincie/gemeente/plaats (Noord-Holland /
+Drechterland / Hoogkarspel), adres, postcode, entree-type én logo- + fotopreview;
+datumvelden leeg. Ingediend met STATUS 200:
+
+```
+BODY : {"titel":"gggg","plaats_tid":28739,"datum_start":"2026-09-26 17:02:00",
+        "omschrijving":"...","adres":{"thoroughfare":"yyy","postal_code":"gggg",
+        "country":"NL"},"categorie_tids":[36190,36194,36484],
+        "logo_fid":5513220,"fotos_fids":[5513221],"entree_tid":36197}
+→ {"status":"created_pending_review","nid":"222823"}
+```
 
 
-**De indiening is hiermee compleet**: alle waarden die `stadsactiviteitCreate`
-meekrijgt komen uit de page states, en die zijn nu gezet.
+⚠️ **Op te ruimen door Bob: testnodes 222822 en 222823 op productie** (beide door
+Claude aangemaakt tijdens deze tests; 222823 staat ongepubliceerd).
 
 
-**Nog te doen — alleen nog zichtbaarheid, geen functionaliteit:**
-- **Initial Option Value op vijf dropdowns**, zodat de gebruiker de gekloonde
-  keuze ook *ziet* staan: `DropDownProvincie` (aan **App State**:
-  `kloonTekst(kloonBron,'provincie_tid')` — dit is de enige die al bij de eerste
-  build bestaat, dus niet aan page state hangen), `DropDownGemeente`
-  (`createGemeenteID`), `DropDownPlaats` (`createPlaatsID`), `DropDownEntree`
-  (`createEntreeTid`), `DropDownCategorieen` (`createCategorieTids`).
-  Zonder deze tonen de dropdowns "Selecteer…" terwijl de onderliggende waarde
-  wel goed staat — verwarrend, maar niet fout.
-- ⚠️ **`createFotosUrls` is type `List < Image Path >` en `createLogoUrl` is
-  `Image Path`** — daar is `kloonLijst`/`kloonTekst` (String) niet aan te binden.
-  Zelfde restpunt als op het evenementformulier: de **preview** van logo en
-  foto's ontbreekt bij een kloon, de fids gaan wél mee naar Drupal. Oplossing
-  vraagt om het type van die twee page states om te zetten naar String (en dan
-  de Image-widgets opnieuw binden) — besluit aan Bob.
-
-⚠️ **127-F is nu urgent geworden**: zolang `kloonBron` niet gewist wordt bij
-"nieuw aanmaken", krijgt een verse activiteit het vorige kloonformulier te zien.
-Dat raakt o.a. de knop "+ Activiteit aanmaken" per stadsrecht op `mijnProfiel`.
-
-#### 127-F · `kloonBron` wissen · Eigenaar: Claude — bezig (2026-09-22)
-
-Zonder dit blijft een kloon hangen: wie daarna een **vers** evenement aanmaakt,
-krijgt het vorige formulier opnieuw ingevuld.
-
-Zet vóór elke bestaande "nieuw aanmaken"-navigatie een `Update App State` met
-`kloonBron` op **Clear Value** (zelfde patroon als de uitlogknop). Vier plekken in
-een verse export van 2026-09-20:
-
-| bestand | regel | doel |
+#### 127-F · `kloonBron` wissen · ✅ AF (2026-09-22)
+
+Vóór elke "nieuw aanmaken"-navigatie staat nu een `Update App State` met
+`kloonBron` op **Clear Value** (genereert `FFAppState().kloonBron = null;`).
+Vier plekken, alle vier geverifieerd in een verse export:
+
+| bestand | knop | doel |
 |---|---|---|
 |---|---|---|
-| `mijn_profiel_widget.dart` | 823 | `UitgaansevenementAanmaken` |
-| `mijn_profiel_widget.dart` | 1317 | `StadsactiviteitAanmaken` |
-| `mijn_profiel_widget.dart` | 1506 | `StadsactiviteitAanmaken` |
-| `favorieten_widget.dart` | 1042 | `StadsactiviteitAanmaken` |
+| `mijn_profiel_widget.dart` | `+ Evenement aanmaken` | `UitgaansevenementAanmaken` |
+| `mijn_profiel_widget.dart` | `+ Activiteit` | `StadsactiviteitAanmaken` |
+| `mijn_profiel_widget.dart` | `+ Activiteit aanmaken` (per stadsrecht) | `StadsactiviteitAanmaken` |
+| `favorieten_widget.dart` | `Stadsactiviteit aanmaken` | `StadsactiviteitAanmaken` |
 
 
 Dit zijn **alle** ingangen: de aanmaakpagina's zijn verder nergens vanuit de app
 Dit zijn **alle** ingangen: de aanmaakpagina's zijn verder nergens vanuit de app
 bereikbaar (wel via een directe route).
 bereikbaar (wel via een directe route).
 
 
-#### Volgorde en omvang
+**Op het toestel bewezen (2026-09-22):** ná een kloon levert "+ Activiteit
+aanmaken" bij een stadsrecht een volledig leeg formulier op (titel, omschrijving,
+categorie "Selecteer…", entree "Select…", geen media), mét de juiste gemeente
+voorgeselecteerd uit `gemeenteTid`.
 
 
-1. **127-A** (Drupal) — code staat klaar, ±15 min, blokkeert alles.
-2. **127-B** (App State + call + 2 functies) — ±30 min.
-3. **127-C + 127-D + 127-F** (evenementen, end-to-end werkend) — één sessie.
-4. **124/125/126** (cascade) en daarna **127-E** (activiteiten) — eigen sessie.
+#### Stand
 
 
-Stap 1-3 leveren al een werkende kloonknop voor evenementen; de knop op een
-activiteitenkaart verbergen tot 127-E klaar is, is één Visibility-conditie op de
-page parameter `type`.
+A t/m G zijn **allemaal af** (127-A Drupal door Bob, B t/m G in de builder).
+Open restpunt: alleen de **kleur** van de Kopie-knop, zie hieronder.
 
 
 #### Testen
 #### Testen
 
 

+ 3 - 0
lib/favorieten/favorieten_widget.dart

@@ -1070,6 +1070,9 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                     ),
                                     ),
                                     FFButtonWidget(
                                     FFButtonWidget(
                                       onPressed: () async {
                                       onPressed: () async {
+                                        FFAppState().kloonBron = null;
+                                        safeSetState(() {});
+
                                         context.pushNamed(
                                         context.pushNamed(
                                             StadsactiviteitAanmakenWidget
                                             StadsactiviteitAanmakenWidget
                                                 .routeName);
                                                 .routeName);

+ 27 - 0
lib/flutter_flow/custom_functions.dart

@@ -526,3 +526,30 @@ List<String> kloonLijst(
   for (final item in waarde) if (item != null) uit.add(item.toString());
   for (final item in waarde) if (item != null) uit.add(item.toString());
   return uit;
   return uit;
 }
 }
+
+bool nieuwsbriefAan(dynamic item) {
+  if (item is! Map) return false;
+  return item['geabonneerd'] == true;
+}
+
+String kloonBeeld(
+  dynamic bron,
+  String sleutel,
+) {
+  if (bron == null || bron is! Map) return '';
+  final waarde = bron[sleutel];
+  if (waarde == null) return '';
+  return waarde.toString();
+}
+
+List<String> kloonBeelden(
+  dynamic bron,
+  String sleutel,
+) {
+  final uit = <String>[];
+  if (bron == null || bron is! Map) return uit;
+  final waarde = bron[sleutel];
+  if (waarde is! List) return uit;
+  for (final item in waarde) if (item != null) uit.add(item.toString());
+  return uit;
+}

+ 18 - 6
lib/flutter_flow/internationalization.dart

@@ -443,7 +443,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     },
     'oxse6aci': {
     'oxse6aci': {
       'nl': 'Kopie',
       'nl': 'Kopie',
-      'en': '',
+      'en': 'Copy',
     },
     },
     'aiokgolu': {
     'aiokgolu': {
       'nl': 'Mijn horecagelegenheden',
       'nl': 'Mijn horecagelegenheden',
@@ -476,7 +476,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     },
     'wcyy4pao': {
     'wcyy4pao': {
       'nl': 'Kopie',
       'nl': 'Kopie',
-      'en': '',
+      'en': 'Copy',
     },
     },
     '5iw84w8w': {
     '5iw84w8w': {
       'nl': 'Mijn gemeenten (stadsrechten)',
       'nl': 'Mijn gemeenten (stadsrechten)',
@@ -496,7 +496,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     },
     '0sxtqp61': {
     '0sxtqp61': {
       'nl': 'Wachtwoord wijzigen',
       'nl': 'Wachtwoord wijzigen',
-      'en': '',
+      'en': 'Change password',
     },
     },
     '373wjou2': {
     '373wjou2': {
       'nl': '',
       'nl': '',
@@ -504,7 +504,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     },
     '4sjzjw0j': {
     '4sjzjw0j': {
       'nl': 'Account verwijderen',
       'nl': 'Account verwijderen',
-      'en': '',
+      'en': 'Delete account',
     },
     },
     'c8f4rdv0': {
     'c8f4rdv0': {
       'nl': '',
       'nl': '',
@@ -512,7 +512,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     },
     'owegb3ht': {
     'owegb3ht': {
       'nl': 'Uitloggen',
       'nl': 'Uitloggen',
-      'en': '',
+      'en': 'Log out',
     },
     },
     'rflzqa3z': {
     'rflzqa3z': {
       'nl': '',
       'nl': '',
@@ -520,7 +520,19 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     },
     '9s07bzb1': {
     '9s07bzb1': {
       'nl': 'Nieuwsbrieven',
       'nl': 'Nieuwsbrieven',
-      'en': '',
+      'en': 'Newsletters',
+    },
+    '13hlbqrf': {
+      'nl':
+          'Je volgt nog geen gemeenten, dus de wekelijkse agenda blijft leeg. Tik hier om gemeenten te kiezen.',
+      'en':
+          'You don\'t follow any municipalities yet, so the weekly agenda stays empty. Tap here to choose municipalities.',
+    },
+    'jmzi90pc': {
+      'nl':
+          'De wekelijkse uitgaansagenda gebruikt de gemeenten die je volgt. Tik hier om ze te kiezen.',
+      'en':
+          'The weekly agenda uses the municipalities you follow. Tap here to choose them.',
     },
     },
     'k800peag': {
     'k800peag': {
       'nl': 'Home',
       'nl': 'Home',

+ 12 - 2
lib/mijn_aanmeldingen/mijn_aanmeldingen_widget.dart

@@ -422,8 +422,18 @@ class _MijnAanmeldingenWidgetState extends State<MijnAanmeldingenWidget>
                                       );
                                       );
                                     } else {
                                     } else {
                                       context.pushNamed(
                                       context.pushNamed(
-                                          StadsactiviteitAanmakenWidget
-                                              .routeName);
+                                        StadsactiviteitAanmakenWidget.routeName,
+                                        queryParameters: {
+                                          'gemeenteTid': serializeParam(
+                                            getJsonField(
+                                              (_model.apiResulttzz?.jsonBody ??
+                                                  ''),
+                                              r'''$.gemeente_tid''',
+                                            ).toString(),
+                                            ParamType.String,
+                                          ),
+                                        }.withoutNulls,
+                                      );
                                     }
                                     }
                                   }
                                   }
 
 

+ 32 - 17
lib/mijn_profiel/mijn_profiel_model.dart

@@ -1,5 +1,6 @@
 import '/backend/api_requests/api_calls.dart';
 import '/backend/api_requests/api_calls.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_icon_button.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
@@ -7,6 +8,7 @@ import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagele
 import '/shared/drawer_component/drawer_component_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import '/shared/lege_lijst_component/lege_lijst_component_widget.dart';
 import '/shared/lege_lijst_component/lege_lijst_component_widget.dart';
 import 'dart:ui';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import '/index.dart';
 import 'mijn_profiel_widget.dart' show MijnProfielWidget;
 import 'mijn_profiel_widget.dart' show MijnProfielWidget;
@@ -40,6 +42,25 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
   void updateMijnHorecaResponsAtIndex(int index, Function(dynamic) updateFn) =>
   void updateMijnHorecaResponsAtIndex(int index, Function(dynamic) updateFn) =>
       mijnHorecaRespons[index] = updateFn(mijnHorecaRespons[index]);
       mijnHorecaRespons[index] = updateFn(mijnHorecaRespons[index]);
 
 
+  late LoggableList<dynamic> _favGemeenten = LoggableList([]);
+  set favGemeenten(List<dynamic> value) {
+    if (value != null) {
+      _favGemeenten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get favGemeenten =>
+      _favGemeenten?..logger = () => debugLogWidgetClass(this);
+  void addToFavGemeenten(dynamic item) => favGemeenten.add(item);
+  void removeFromFavGemeenten(dynamic item) => favGemeenten.remove(item);
+  void removeAtIndexFromFavGemeenten(int index) => favGemeenten.removeAt(index);
+  void insertAtIndexInFavGemeenten(int index, dynamic item) =>
+      favGemeenten.insert(index, item);
+  void updateFavGemeentenAtIndex(int index, Function(dynamic) updateFn) =>
+      favGemeenten[index] = updateFn(favGemeenten[index]);
+
   ///  State fields for stateful widgets in this page.
   ///  State fields for stateful widgets in this page.
 
 
   // Stores action output result for [Backend Call - API (MijnHorecagelegenheden)] action in mijnProfiel widget.
   // Stores action output result for [Backend Call - API (MijnHorecagelegenheden)] action in mijnProfiel widget.
@@ -82,15 +103,6 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
 
 
   ApiCallResponse? get apiResultAct => _apiResultAct;
   ApiCallResponse? get apiResultAct => _apiResultAct;
 
 
-  // State field(s) for Switch widget.
-  bool? _switchValue;
-  set switchValue(bool? value) {
-    _switchValue = value;
-    debugLogWidgetClass(this);
-  }
-
-  bool? get switchValue => _switchValue;
-
   // Model for HeaderButtonsComponent component.
   // Model for HeaderButtonsComponent component.
   late HeaderButtonsComponentModel headerButtonsComponentModel;
   late HeaderButtonsComponentModel headerButtonsComponentModel;
   // Model for drawerComponent component.
   // Model for drawerComponent component.
@@ -128,6 +140,17 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
                 'reference=QiIKGgoRbWlqbkhvcmVjYVJlc3BvbnMSBWoyczNxcgQSAggJUAFaEW1pam5Ib3JlY2FSZXNwb25zYgttaWpuUHJvZmllbA==',
                 'reference=QiIKGgoRbWlqbkhvcmVjYVJlc3BvbnMSBWoyczNxcgQSAggJUAFaEW1pam5Ib3JlY2FSZXNwb25zYgttaWpuUHJvZmllbA==',
             name: 'dynamic',
             name: 'dynamic',
             nullable: false,
             nullable: false,
+          ),
+          'favGemeenten': debugSerializeParam(
+            favGemeenten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+            searchReference:
+                'reference=Qh0KFQoMZmF2R2VtZWVudGVuEgU4dmQza3IEEgIICVABWgxmYXZHZW1lZW50ZW5iC21pam5Qcm9maWVs',
+            name: 'dynamic',
+            nullable: false,
           )
           )
         }.entries,
         }.entries,
         widgetStates: {
         widgetStates: {
@@ -146,14 +169,6 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
                 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
                 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
             name: 'int',
             name: 'int',
             nullable: true,
             nullable: true,
-          ),
-          'switchValue': debugSerializeParam(
-            switchValue,
-            ParamType.bool,
-            link:
-                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
-            name: 'bool',
-            nullable: true,
           )
           )
         }.entries,
         }.entries,
         actionOutputs: {
         actionOutputs: {

+ 234 - 64
lib/mijn_profiel/mijn_profiel_widget.dart

@@ -1,5 +1,6 @@
 import '/backend/api_requests/api_calls.dart';
 import '/backend/api_requests/api_calls.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_icon_button.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
@@ -7,6 +8,7 @@ import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagele
 import '/shared/drawer_component/drawer_component_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import '/shared/lege_lijst_component/lege_lijst_component_widget.dart';
 import '/shared/lege_lijst_component/lege_lijst_component_widget.dart';
 import 'dart:ui';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import '/index.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
@@ -941,6 +943,10 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget>
                                                   }),
                                                   }),
                                                   FFButtonWidget(
                                                   FFButtonWidget(
                                                     onPressed: () async {
                                                     onPressed: () async {
+                                                      FFAppState().kloonBron =
+                                                          null;
+                                                      safeSetState(() {});
+
                                                       context.pushNamed(
                                                       context.pushNamed(
                                                         UitgaansevenementAanmakenWidget
                                                         UitgaansevenementAanmakenWidget
                                                             .routeName,
                                                             .routeName,
@@ -1429,8 +1435,21 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget>
                                                         safeSetState(() {});
                                                         safeSetState(() {});
 
 
                                                         context.pushNamed(
                                                         context.pushNamed(
-                                                            StadsactiviteitAanmakenWidget
-                                                                .routeName);
+                                                          StadsactiviteitAanmakenWidget
+                                                              .routeName,
+                                                          queryParameters: {
+                                                            'gemeenteTid':
+                                                                serializeParam(
+                                                              getJsonField(
+                                                                (_model.apiResultAct
+                                                                        ?.jsonBody ??
+                                                                    ''),
+                                                                r'''$.gemeente_tid''',
+                                                              ).toString(),
+                                                              ParamType.String,
+                                                            ),
+                                                          }.withoutNulls,
+                                                        );
                                                       }
                                                       }
 
 
                                                       safeSetState(() {});
                                                       safeSetState(() {});
@@ -1539,6 +1558,9 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget>
                                       ),
                                       ),
                                       FFButtonWidget(
                                       FFButtonWidget(
                                         onPressed: () async {
                                         onPressed: () async {
+                                          FFAppState().kloonBron = null;
+                                          safeSetState(() {});
+
                                           context.pushNamed(
                                           context.pushNamed(
                                               StadsactiviteitAanmakenWidget
                                               StadsactiviteitAanmakenWidget
                                                   .routeName);
                                                   .routeName);
@@ -1728,6 +1750,10 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget>
                                                       ),
                                                       ),
                                                       FFButtonWidget(
                                                       FFButtonWidget(
                                                         onPressed: () async {
                                                         onPressed: () async {
+                                                          FFAppState()
+                                                              .kloonBron = null;
+                                                          safeSetState(() {});
+
                                                           context.pushNamed(
                                                           context.pushNamed(
                                                             StadsactiviteitAanmakenWidget
                                                             StadsactiviteitAanmakenWidget
                                                                 .routeName,
                                                                 .routeName,
@@ -2137,109 +2163,159 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget>
                                             final nieuwsbriefItemItem =
                                             final nieuwsbriefItemItem =
                                                 nieuwsbriefItem[
                                                 nieuwsbriefItem[
                                                     nieuwsbriefItemIndex];
                                                     nieuwsbriefItemIndex];
-                                            return Row(
-                                              mainAxisSize: MainAxisSize.max,
-                                              children: [
-                                                Column(
-                                                  mainAxisSize:
-                                                      MainAxisSize.max,
-                                                  children: [
-                                                    Text(
-                                                      getJsonField(
-                                                        nieuwsbriefItemItem,
-                                                        r'''$.naam''',
-                                                      ).toString(),
-                                                      style:
-                                                          FlutterFlowTheme.of(
-                                                                  context)
-                                                              .bodyMedium
+                                            return Padding(
+                                              padding: EdgeInsetsDirectional
+                                                  .fromSTEB(
+                                                      16.0, 10.0, 16.0, 10.0),
+                                              child: Row(
+                                                mainAxisSize: MainAxisSize.max,
+                                                children: [
+                                                  Expanded(
+                                                    child: Column(
+                                                      mainAxisSize:
+                                                          MainAxisSize.max,
+                                                      crossAxisAlignment:
+                                                          CrossAxisAlignment
+                                                              .start,
+                                                      children: [
+                                                        Text(
+                                                          getJsonField(
+                                                            nieuwsbriefItemItem,
+                                                            r'''$.naam''',
+                                                          ).toString(),
+                                                          style: FlutterFlowTheme
+                                                                  .of(context)
+                                                              .titleSmall
                                                               .override(
                                                               .override(
                                                                 font:
                                                                 font:
                                                                     GoogleFonts
                                                                     GoogleFonts
                                                                         .roboto(
                                                                         .roboto(
                                                                   fontWeight: FlutterFlowTheme.of(
                                                                   fontWeight: FlutterFlowTheme.of(
                                                                           context)
                                                                           context)
-                                                                      .bodyMedium
+                                                                      .titleSmall
                                                                       .fontWeight,
                                                                       .fontWeight,
                                                                   fontStyle: FlutterFlowTheme.of(
                                                                   fontStyle: FlutterFlowTheme.of(
                                                                           context)
                                                                           context)
-                                                                      .bodyMedium
+                                                                      .titleSmall
                                                                       .fontStyle,
                                                                       .fontStyle,
                                                                 ),
                                                                 ),
                                                                 letterSpacing:
                                                                 letterSpacing:
                                                                     0.0,
                                                                     0.0,
                                                                 fontWeight: FlutterFlowTheme.of(
                                                                 fontWeight: FlutterFlowTheme.of(
                                                                         context)
                                                                         context)
-                                                                    .bodyMedium
+                                                                    .titleSmall
                                                                     .fontWeight,
                                                                     .fontWeight,
                                                                 fontStyle: FlutterFlowTheme.of(
                                                                 fontStyle: FlutterFlowTheme.of(
                                                                         context)
                                                                         context)
-                                                                    .bodyMedium
+                                                                    .titleSmall
                                                                     .fontStyle,
                                                                     .fontStyle,
                                                               ),
                                                               ),
-                                                    ),
-                                                    Text(
-                                                      getJsonField(
-                                                        nieuwsbriefItemItem,
-                                                        r'''$.omschrijving''',
-                                                      ).toString(),
-                                                      style:
-                                                          FlutterFlowTheme.of(
-                                                                  context)
-                                                              .bodyMedium
+                                                        ),
+                                                        Text(
+                                                          getJsonField(
+                                                            nieuwsbriefItemItem,
+                                                            r'''$.omschrijving''',
+                                                          ).toString(),
+                                                          style: FlutterFlowTheme
+                                                                  .of(context)
+                                                              .bodySmall
                                                               .override(
                                                               .override(
                                                                 font:
                                                                 font:
                                                                     GoogleFonts
                                                                     GoogleFonts
                                                                         .roboto(
                                                                         .roboto(
                                                                   fontWeight: FlutterFlowTheme.of(
                                                                   fontWeight: FlutterFlowTheme.of(
                                                                           context)
                                                                           context)
-                                                                      .bodyMedium
+                                                                      .bodySmall
                                                                       .fontWeight,
                                                                       .fontWeight,
                                                                   fontStyle: FlutterFlowTheme.of(
                                                                   fontStyle: FlutterFlowTheme.of(
                                                                           context)
                                                                           context)
-                                                                      .bodyMedium
+                                                                      .bodySmall
                                                                       .fontStyle,
                                                                       .fontStyle,
                                                                 ),
                                                                 ),
+                                                                color: FlutterFlowTheme.of(
+                                                                        context)
+                                                                    .secondaryText,
                                                                 letterSpacing:
                                                                 letterSpacing:
                                                                     0.0,
                                                                     0.0,
                                                                 fontWeight: FlutterFlowTheme.of(
                                                                 fontWeight: FlutterFlowTheme.of(
                                                                         context)
                                                                         context)
-                                                                    .bodyMedium
+                                                                    .bodySmall
                                                                     .fontWeight,
                                                                     .fontWeight,
                                                                 fontStyle: FlutterFlowTheme.of(
                                                                 fontStyle: FlutterFlowTheme.of(
                                                                         context)
                                                                         context)
-                                                                    .bodyMedium
+                                                                    .bodySmall
                                                                     .fontStyle,
                                                                     .fontStyle,
                                                               ),
                                                               ),
+                                                        ),
+                                                      ],
                                                     ),
                                                     ),
-                                                  ],
-                                                ),
-                                                Switch.adaptive(
-                                                  value: _model.switchValue ??=
-                                                      nieuwsbriefItemItem,
-                                                  onChanged: (newValue) async {
-                                                    safeSetState(() =>
-                                                        _model.switchValue =
-                                                            newValue!);
-                                                  },
-                                                  activeColor:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .primary,
-                                                  activeTrackColor:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .primary,
-                                                  inactiveTrackColor:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .alternate,
-                                                  inactiveThumbColor:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .secondaryBackground,
-                                                ),
-                                              ],
+                                                  ),
+                                                  if (!functions.nieuwsbriefAan(
+                                                      nieuwsbriefItemItem))
+                                                    FlutterFlowIconButton(
+                                                      borderRadius: 8.0,
+                                                      buttonSize: 40.0,
+                                                      icon: Icon(
+                                                        Icons.toggle_off,
+                                                        color:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .secondaryText,
+                                                        size: 32.0,
+                                                      ),
+                                                      onPressed: () async {
+                                                        await actions
+                                                            .drupalRequest(
+                                                          'POST',
+                                                          'https://uitgaanskrant.com/nl/flutterdrup/nieuwsbrieven/subscribe.json',
+                                                          FFAppState()
+                                                              .userSessionname,
+                                                          FFAppState()
+                                                              .userSessionid,
+                                                          FFAppState()
+                                                              .userToken,
+                                                          '{\"tid\": ${getJsonField(
+                                                            nieuwsbriefItemItem,
+                                                            r'''$.tid''',
+                                                          ).toString()}}',
+                                                        );
+                                                        safeSetState(() {});
+                                                      },
+                                                    ),
+                                                  if (functions.nieuwsbriefAan(
+                                                      nieuwsbriefItemItem))
+                                                    FlutterFlowIconButton(
+                                                      borderRadius: 8.0,
+                                                      buttonSize: 40.0,
+                                                      icon: Icon(
+                                                        Icons.toggle_on,
+                                                        color:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .primary,
+                                                        size: 32.0,
+                                                      ),
+                                                      onPressed: () async {
+                                                        await actions
+                                                            .drupalRequest(
+                                                          'POST',
+                                                          'https://uitgaanskrant.com/nl/flutterdrup/nieuwsbrieven/unsubscribe.json',
+                                                          FFAppState()
+                                                              .userSessionname,
+                                                          FFAppState()
+                                                              .userSessionid,
+                                                          FFAppState()
+                                                              .userToken,
+                                                          '{\"tid\": ${getJsonField(
+                                                            nieuwsbriefItemItem,
+                                                            r'''$.tid''',
+                                                          ).toString()}}',
+                                                        );
+                                                        safeSetState(() {});
+                                                      },
+                                                    ),
+                                                ],
+                                              ),
                                             );
                                             );
                                           },
                                           },
                                         );
                                         );
@@ -2247,6 +2323,100 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget>
                                     );
                                     );
                                   },
                                   },
                                 ),
                                 ),
+                                if (!(FFAppState()
+                                    .favorieteGemeenteIds
+                                    .isNotEmpty))
+                                  Padding(
+                                    padding: EdgeInsetsDirectional.fromSTEB(
+                                        16.0, 8.0, 16.0, 24.0),
+                                    child: InkWell(
+                                      splashColor: Colors.transparent,
+                                      focusColor: Colors.transparent,
+                                      hoverColor: Colors.transparent,
+                                      highlightColor: Colors.transparent,
+                                      onTap: () async {
+                                        context.pushNamed(
+                                            SelectprovinciegemeenteWidget
+                                                .routeName);
+                                      },
+                                      child: Text(
+                                        FFLocalizations.of(context).getText(
+                                          '13hlbqrf' /* Je volgt nog geen gemeenten, d... */,
+                                        ),
+                                        style: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .override(
+                                              font: GoogleFonts.roboto(
+                                                fontWeight:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodyMedium
+                                                        .fontWeight,
+                                                fontStyle:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodyMedium
+                                                        .fontStyle,
+                                              ),
+                                              color:
+                                                  FlutterFlowTheme.of(context)
+                                                      .primary,
+                                              letterSpacing: 0.0,
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontStyle,
+                                            ),
+                                      ),
+                                    ),
+                                  ),
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      16.0, 8.0, 16.0, 24.0),
+                                  child: InkWell(
+                                    splashColor: Colors.transparent,
+                                    focusColor: Colors.transparent,
+                                    hoverColor: Colors.transparent,
+                                    highlightColor: Colors.transparent,
+                                    onTap: () async {
+                                      context.pushNamed(
+                                          SelectprovinciegemeenteWidget
+                                              .routeName);
+                                    },
+                                    child: Text(
+                                      FFLocalizations.of(context).getText(
+                                        'jmzi90pc' /* De wekelijkse uitgaansagenda g... */,
+                                      ),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .override(
+                                            font: GoogleFonts.roboto(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontStyle,
+                                            ),
+                                            color: FlutterFlowTheme.of(context)
+                                                .secondary,
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyMedium
+                                                    .fontStyle,
+                                          ),
+                                    ),
+                                  ),
+                                ),
                               ],
                               ],
                             ),
                             ),
                           ],
                           ],

+ 64 - 14
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart

@@ -59,15 +59,40 @@ class _StadsactiviteitAanmakenWidgetState
             (_model.mijnStadsrechtenResp?.jsonBody ?? ''), widget!.gemeenteTid);
             (_model.mijnStadsrechtenResp?.jsonBody ?? ''), widget!.gemeenteTid);
         safeSetState(() {});
         safeSetState(() {});
       }
       }
+      _model.createProvincieID =
+          functions.kloonTekst(FFAppState().kloonBron, 'provincie_tid');
+      _model.createPlaatsID =
+          functions.kloonTekst(FFAppState().kloonBron, 'plaats_tid');
+      _model.createEntreeTid =
+          functions.kloonTekst(FFAppState().kloonBron, 'entree_tid');
+      _model.createLogoFid =
+          functions.kloonTekst(FFAppState().kloonBron, 'logo_fid');
+      _model.createCategorieTids = functions
+          .kloonLijst(FFAppState().kloonBron, 'categorie_tids')
+          .toList()
+          .cast<String>();
+      _model.createFotosFids = functions
+          .kloonLijst(FFAppState().kloonBron, 'fotos_fids')
+          .toList()
+          .cast<String>();
+      _model.createLogoUrl =
+          functions.kloonBeeld(FFAppState().kloonBron, 'logo_url');
+      _model.createFotosUrls = functions
+          .kloonBeelden(FFAppState().kloonBron, 'fotos_urls')
+          .toList()
+          .cast<String>();
+      safeSetState(() {});
     });
     });
 
 
-    _model.textFieldTitelTextController ??= TextEditingController()
+    _model.textFieldTitelTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'titel'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldTitelFocusNode ??= FocusNode();
     _model.textFieldTitelFocusNode ??= FocusNode();
 
 
-    _model.textFieldOmschrijvingTextController ??= TextEditingController()
+    _model.textFieldOmschrijvingTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'omschrijving'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
@@ -85,43 +110,51 @@ class _StadsactiviteitAanmakenWidgetState
       });
       });
     _model.textFieldDatumEindFocusNode ??= FocusNode();
     _model.textFieldDatumEindFocusNode ??= FocusNode();
 
 
-    _model.textFieldAdresTextController ??= TextEditingController()
+    _model.textFieldAdresTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'adres_straat'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldAdresFocusNode ??= FocusNode();
     _model.textFieldAdresFocusNode ??= FocusNode();
 
 
-    _model.textFieldPostcodeTextController ??= TextEditingController()
+    _model.textFieldPostcodeTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'adres_postcode'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldPostcodeFocusNode ??= FocusNode();
     _model.textFieldPostcodeFocusNode ??= FocusNode();
 
 
-    _model.textFieldOrganisatorTextController ??= TextEditingController()
+    _model.textFieldOrganisatorTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'organisator'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldOrganisatorFocusNode ??= FocusNode();
     _model.textFieldOrganisatorFocusNode ??= FocusNode();
 
 
-    _model.textFieldContactTextController ??= TextEditingController()
+    _model.textFieldContactTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'contact'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldContactFocusNode ??= FocusNode();
     _model.textFieldContactFocusNode ??= FocusNode();
 
 
-    _model.textFieldWebsiteURLTextController ??= TextEditingController()
+    _model.textFieldWebsiteURLTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'website_url'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldWebsiteURLFocusNode ??= FocusNode();
     _model.textFieldWebsiteURLFocusNode ??= FocusNode();
 
 
-    _model.textFieldToelichtingEntreeTextController ??= TextEditingController()
+    _model.textFieldToelichtingEntreeTextController ??= TextEditingController(
+        text:
+            functions.kloonTekst(FFAppState().kloonBron, 'toelichting_entree'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
     _model.textFieldToelichtingEntreeFocusNode ??= FocusNode();
     _model.textFieldToelichtingEntreeFocusNode ??= FocusNode();
 
 
-    _model.textFieldEntreeprijsTextController ??= TextEditingController()
+    _model.textFieldEntreeprijsTextController ??= TextEditingController(
+        text: functions.kloonTekst(FFAppState().kloonBron, 'entree_prijs'))
       ..addListener(() {
       ..addListener(() {
         debugLogWidgetClass(_model);
         debugLogWidgetClass(_model);
       });
       });
@@ -705,7 +738,14 @@ class _StadsactiviteitAanmakenWidgetState
                                   return FlutterFlowDropDown<String>(
                                   return FlutterFlowDropDown<String>(
                                     multiSelectController: _model
                                     multiSelectController: _model
                                             .dropDownCategorieenValueController ??=
                                             .dropDownCategorieenValueController ??=
-                                        FormListFieldController<String>(null),
+                                        FormListFieldController<String>(
+                                            _model.dropDownCategorieenValue ??=
+                                                List<String>.from(
+                                      functions.kloonLijst(
+                                              FFAppState().kloonBron,
+                                              'categorie_tids') ??
+                                          [],
+                                    )),
                                     options: List<String>.from(
                                     options: List<String>.from(
                                         functions.categorieSubTids(
                                         functions.categorieSubTids(
                                             dropDownCategorieenCategorieenResponse
                                             dropDownCategorieenCategorieenResponse
@@ -1764,7 +1804,12 @@ class _StadsactiviteitAanmakenWidgetState
                                       return FlutterFlowDropDown<String>(
                                       return FlutterFlowDropDown<String>(
                                         controller: _model
                                         controller: _model
                                                 .dropDownProvincieValueController ??=
                                                 .dropDownProvincieValueController ??=
-                                            FormFieldController<String>(null),
+                                            FormFieldController<String>(
+                                          _model.dropDownProvincieValue ??=
+                                              functions.kloonTekst(
+                                                  FFAppState().kloonBron,
+                                                  'provincie_tid'),
+                                        ),
                                         options: List<String>.from(
                                         options: List<String>.from(
                                             (getJsonField(
                                             (getJsonField(
                                           dropDownProvincieProvinciesResponse
                                           dropDownProvincieProvinciesResponse
@@ -1897,7 +1942,8 @@ class _StadsactiviteitAanmakenWidgetState
                                           controller: _model
                                           controller: _model
                                                   .dropDownGemeenteValueController ??=
                                                   .dropDownGemeenteValueController ??=
                                               FormFieldController<String>(
                                               FormFieldController<String>(
-                                            _model.dropDownGemeenteValue ??= '',
+                                            _model.dropDownGemeenteValue ??=
+                                                _model.createGemeenteID,
                                           ),
                                           ),
                                           options: List<String>.from(
                                           options: List<String>.from(
                                               (getJsonField(
                                               (getJsonField(
@@ -2038,7 +2084,8 @@ class _StadsactiviteitAanmakenWidgetState
                                           controller: _model
                                           controller: _model
                                                   .dropDownPlaatsValueController ??=
                                                   .dropDownPlaatsValueController ??=
                                               FormFieldController<String>(
                                               FormFieldController<String>(
-                                            _model.dropDownPlaatsValue ??= '',
+                                            _model.dropDownPlaatsValue ??=
+                                                _model.createPlaatsID,
                                           ),
                                           ),
                                           options: List<String>.from(
                                           options: List<String>.from(
                                               (getJsonField(
                                               (getJsonField(
@@ -2958,7 +3005,10 @@ class _StadsactiviteitAanmakenWidgetState
                                       controller: _model
                                       controller: _model
                                               .dropDownEntreeValueController ??=
                                               .dropDownEntreeValueController ??=
                                           FormFieldController<String>(
                                           FormFieldController<String>(
-                                        _model.dropDownEntreeValue ??= '',
+                                        _model.dropDownEntreeValue ??=
+                                            functions.kloonTekst(
+                                                FFAppState().kloonBron,
+                                                'entree_tid'),
                                       ),
                                       ),
                                       options: List<String>.from((getJsonField(
                                       options: List<String>.from((getJsonField(
                                         dropDownEntreeEntreeoptiesResponse
                                         dropDownEntreeEntreeoptiesResponse

+ 6 - 0
lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_widget.dart

@@ -68,6 +68,12 @@ class _UitgaansevenementAanmakenWidgetState
           .kloonLijst(FFAppState().kloonBron, 'fotos_fids')
           .kloonLijst(FFAppState().kloonBron, 'fotos_fids')
           .toList()
           .toList()
           .cast<String>();
           .cast<String>();
+      _model.createLogoUrl =
+          functions.kloonBeeld(FFAppState().kloonBron, 'logo_url');
+      _model.createFotosUrls = functions
+          .kloonBeelden(FFAppState().kloonBron, 'fotos_urls')
+          .toList()
+          .cast<String>();
       safeSetState(() {});
       safeSetState(() {});
     });
     });