Parcourir la source

Verse export (2026-09-24): 135-C, 114 a-c, fotoboek-restjes, 120 deels; stale nav.dart weg

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
bob il y a 3 heures
Parent
commit
3ab2a35c3c
51 fichiers modifiés avec 5926 ajouts et 2999 suppressions
  1. 9 2
      TASKS.md
  2. 0 18
      lib/app_state.dart
  3. 31 0
      lib/backend/api_requests/api_calls.dart
  4. 7 11
      lib/components/filter_balk_component_copy_widget.dart
  5. 0 12
      lib/components/filter_balk_component_model.dart
  6. 3 12
      lib/components/filter_balk_component_widget.dart
  7. 143 0
      lib/components/kaart_tabel_uitgaan_comp_k_a_n_w_e_g_model.dart
  8. 409 0
      lib/components/kaart_tabel_uitgaan_comp_k_a_n_w_e_g_widget.dart
  9. 142 0
      lib/components/kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_model.dart
  10. 429 0
      lib/components/kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_widget.dart
  11. 1 0
      lib/favorieten/favorieten_model.dart
  12. 77 2
      lib/favorieten/favorieten_widget.dart
  13. 24 0
      lib/flutter_flow/custom_functions.dart
  14. 607 0
      lib/flutter_flow/flutter_flow_language_selector.dart
  15. 70 663
      lib/flutter_flow/internationalization.dart
  16. 7 99
      lib/flutter_flow/nav/nav.dart
  17. 39 35
      lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart
  18. 1 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horecagelegenheden_overzicht_current_model.dart
  19. 31 12
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horecagelegenheden_overzicht_current_widget.dart
  20. 1 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_provincie_page/horecagelegenheden_overzicht_provincie_page_model.dart
  21. 434 405
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_provincie_page/horecagelegenheden_overzicht_provincie_page_widget.dart
  22. 592 434
      lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_widget.dart
  23. 0 18
      lib/index.dart
  24. 3 1
      lib/main.dart
  25. 2 0
      lib/mijn_aanmeldingen/mijn_aanmeldingen_model.dart
  26. 160 84
      lib/mijn_aanmeldingen/mijn_aanmeldingen_widget.dart
  27. 67 2
      lib/mijn_profiel/mijn_profiel_model.dart
  28. 591 510
      lib/mijn_profiel/mijn_profiel_widget.dart
  29. 261 167
      lib/selecteer_plaats/select_state_drop_down_component_copy/select_state_drop_down_component_copy_widget.dart
  30. 56 0
      lib/shared/drawer_component/drawer_component_widget.dart
  31. 62 0
      lib/shared/lege_lijst_melding/lege_lijst_melding_model.dart
  32. 133 0
      lib/shared/lege_lijst_melding/lege_lijst_melding_widget.dart
  33. 1 0
      lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_model.dart
  34. 331 168
      lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart
  35. 1 0
      lib/thuis_bezorgen/thuis_bezorgen_model.dart
  36. 5 2
      lib/thuis_bezorgen/thuis_bezorgen_widget.dart
  37. 0 43
      lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_model.dart
  38. 321 267
      lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_widget.dart
  39. 0 18
      lib/uitgaanspaginas/home/home_model.dart
  40. 1 3
      lib/uitgaanspaginas/home/home_widget.dart
  41. 1 0
      lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_model.dart
  42. 4 2
      lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart
  43. 1 0
      lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_model.dart
  44. 6 2
      lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart
  45. 1 3
      lib/uitgaanspaginas/p_uitgaan_page/p_uitgaan_page_widget.dart
  46. 1 0
      lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_model.dart
  47. 4 2
      lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart
  48. 1 0
      lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_model.dart
  49. 5 2
      lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart
  50. 153 0
      lib/uitgaanspaginas/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_model.dart
  51. 697 0
      lib/uitgaanspaginas/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_widget.dart

+ 9 - 2
TASKS.md

@@ -150,7 +150,7 @@ schoon. De prijs van disablen is één warning per actie.
 | **Bij livegang** | Schakelaars en opruimklussen | Eigen blok hieronder |
 | ~~115~~ | ~~AdBanner verplaatsen~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): volgorde is nu slider → banner → filterbalk → lijst |
 | ~~116~~ | ~~AdBanner springt~~ | ✅ **AF** (Bob 2026-09-20): Container `65/65/105/105` mét de padding erin, dus de banner krijgt zijn volle 50 resp. 90 dp én de lucht tot de slider blijft |
-| **120** | 12 hardcoded kleuren aan thematokens binden — **Bob doet de rest** (2026-09-24) | ✅ Claude deed op `uitgaansevenementAanmaken` ContainerWat/Organisatie/Entree (export-geverifieerd); rest bij Bob, Chrome viel weg. ⚠️ Claude kwam er 2026-09-20 niet in: widget-selectie in de tree landt niet in Bob's huidige Chrome-venster. Inventaris mét vindplaatsen staat klaar | Alle 12 zijn exact gelijk aan een bestaand token, dus nu onzichtbaar — maar ze lopen niet mee bij een themawijziging. Eigen blok hieronder |
+| **120** | 11 hardcoded kleuren aan thematokens binden | **Bob — open.** Stand 2026-09-24 (twee verse exports na Bob's ronde): alleen ContainerWat/Organisatie/Entree op `uitgaansevenementAanmaken` staan op Alternate (door Claude). **Bob's ronde van 2026-09-24 is NIET in de export geland** — nog steeds `0xFFEEEEEE` op `uitgaansevenementAanmaken` r1140 (ContainerWanneer) en 5× op `stadsactiviteitAanmaken`, en `0xFF09B34A` op `tagCategorieComponent` én `HorecagelegenheidoverzichtKaart`. Vermoedelijk is de tekst/hex bewerkt i.p.v. het kleurblokje aangeklikt (dat levert opnieuw een hex op), of is een andere eigenschap (Fill i.p.v. Border) gezet. Eigen blok hieronder |
 | ~~117~~ | ~~Kalenderpermissie eruit~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): `READ_CALENDAR`/`WRITE_CALENDAR` én `NSCalendarsUsageDescription` zijn weg; `CAMERA` staat er nog (terecht) |
 | **122** | Teksten aanmaakpagina's | ✅ **A/B/C af** (Claude 2026-09-20, 19 teksten, export-geverifieerd): verkeerde woorden, typefouten, technische veldnamen en het sterretje bij de categoriekeuze. Open blijven D (hints die het label herhalen), E-restje en F (`Select...` op een NL-pagina) — eigen blok hieronder |
 | **123** | `mijn_stadsrechten` uitbreiden met de keten | **Code staat klaar en is op productie getest.** Vervang regels 316-372 van `custom.evenementen_aanmaken.inc` + `cc all`. Blokkeert 124 |
@@ -1297,7 +1297,14 @@ de tekst — dan maak je er weer een hex van) → in "Choose a Color" onderaan d
 **Theme Colors** → *Alternate* resp. *Tertiary*. Sluit met de X, niet met Escape
 (Escape laat de tree-selectie terugspringen naar de pagina-root).
 
-**Stand 2026-09-24:** `uitgaansevenementAanmaken` ContainerWat, ContainerOrganisatie
+⚠️ **Controle 2026-09-24 avond, twee verse exports:** Bob's ronde is niet doorgekomen —
+zelfde 8 hexen als ervoor. Herkenning in de builder: na een geslaagde wissel toont het
+Border Color-veld het woord **Alternate** (met een blokje ervoor), niet `#eeeeee`.
+Staat er nog een hex, dan is de tekst bewerkt i.p.v. het blokje. Verifieer per kaart
+in het paneel vóór je verdergaat; Claude checkt daarna met
+`grep -c "0xFFEEEEEE" <widget>.dart` (hoort 0) in een verse export.
+
+**Stand 2026-09-24 middag:** `uitgaansevenementAanmaken` ContainerWat, ContainerOrganisatie
 en Container (Entree) staan op Alternate (export: 1× `0xFFEEEEEE` over, dat is
 **ContainerWanneer** — daar landde de klik op de pagina-root). ContainerMedia stond al
 goed. Nog te doen: ContainerWanneer + de 5 kaarten op `stadsactiviteitAanmaken` + de

+ 0 - 18
lib/app_state.dart

@@ -598,14 +598,6 @@ class FFAppState extends ChangeNotifier {
     debugLogAppState(this);
   }
 
-  bool _zoekActief = false;
-  bool get zoekActief => _zoekActief;
-  set zoekActief(bool value) {
-    _zoekActief = value;
-
-    debugLogAppState(this);
-  }
-
   String _laatsteGebruikersnaam = '';
   String get laatsteGebruikersnaam => _laatsteGebruikersnaam;
   set laatsteGebruikersnaam(String value) {
@@ -890,16 +882,6 @@ class FFAppState extends ChangeNotifier {
           name: 'String',
           nullable: false,
         ),
-        'zoekActief': debugSerializeParam(
-          zoekActief,
-          ParamType.bool,
-          link:
-              'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=appValues&appValuesTab=state',
-          searchReference:
-              'reference=Ch4KFgoKem9la0FjdGllZhIIdm1tcXM1bW9yAggFegBaCnpvZWtBY3RpZWY=',
-          name: 'bool',
-          nullable: false,
-        ),
         'laatsteGebruikersnaam': debugSerializeParam(
           laatsteGebruikersnaam,
           ParamType.String,

+ 31 - 0
lib/backend/api_requests/api_calls.dart

@@ -1169,6 +1169,37 @@ class NieuwsbrievenCall {
       ) as List?;
 }
 
+class FavorietenGemeentenCall {
+  static Future<ApiCallResponse> call({
+    String? sessionName = '',
+    String? sessid = '',
+  }) async {
+    return ApiManager.instance.makeApiCall(
+      callName: 'FavorietenGemeenten',
+      apiUrl:
+          'https://uitgaanskrant.com/nl/flutterdrup/favorieten_gemeenten.json',
+      callType: ApiCallType.GET,
+      headers: {
+        'Cookie': '${sessionName}=${sessid}',
+        'Accept': 'application/json',
+      },
+      params: {},
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+
+  static List? items(dynamic response) => getJsonField(
+        response,
+        r'''$[:]''',
+        true,
+      ) as List?;
+}
+
 class MijnFotosCall {
   static Future<ApiCallResponse> call({
     String? sessionName = '',

+ 7 - 11
lib/components/filter_balk_component_copy_widget.dart

@@ -44,7 +44,7 @@ class _FilterBalkComponentCopyWidgetState
     super.initState();
     _model = createModel(context, () => FilterBalkComponentCopyModel());
 
-    _model.textController ??= TextEditingController()
+    _model.textController ??= TextEditingController(text: FFAppState().zoekterm)
       ..addListener(() {
         debugLogWidgetClass(_model);
       });
@@ -151,7 +151,7 @@ class _FilterBalkComponentCopyWidgetState
                           FlutterFlowTheme.of(context).labelMedium.fontStyle,
                     ),
                 hintText: FFLocalizations.of(context).getText(
-                  '5s1g7v3i' /* Zoek op titel */,
+                  'z4698a7h' /* Zoek op titel */,
                 ),
                 hintStyle: FlutterFlowTheme.of(context).labelMedium.override(
                       font: GoogleFonts.roboto(
@@ -334,16 +334,16 @@ class _FilterBalkComponentCopyWidgetState
         FlutterFlowChoiceChips(
           options: [
             ChipData(FFLocalizations.of(context).getText(
-              'xpjj7kgi' /* Alles */,
+              'h141067r' /* Alles */,
             )),
             ChipData(FFLocalizations.of(context).getText(
-              'pxt221x5' /* Vandaag */,
+              'nghzaz2o' /* Vandaag */,
             )),
             ChipData(FFLocalizations.of(context).getText(
-              'n97mi3o5' /* Weekend */,
+              'jjcc18nr' /* Weekend */,
             )),
             ChipData(FFLocalizations.of(context).getText(
-              'dq6am1ts' /* Deze week */,
+              'bv6ozwth' /* Deze week */,
             ))
           ],
           onChanged: (val) async {
@@ -399,11 +399,7 @@ class _FilterBalkComponentCopyWidgetState
           alignment: WrapAlignment.center,
           controller: _model.choiceChipsValueController ??=
               FormFieldController<List<String>>(
-            [
-              FFLocalizations.of(context).getText(
-                'y9dudw29' /* Alles */,
-              )
-            ],
+            [FFAppState().datumFilter],
           ),
           wrapped: true,
         ),

+ 0 - 12
lib/components/filter_balk_component_model.dart

@@ -47,18 +47,6 @@ class FilterBalkComponentModel
 
   @override
   WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
-        widgetParameters: {
-          'parameter1': debugSerializeParam(
-            widget?.parameter1,
-            ParamType.bool,
-            link:
-                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=FilterBalkComponent',
-            searchReference:
-                'reference=SiUKFAoKcGFyYW1ldGVyMRIGZjRoeG4wKgcSBWZhbHNlcgQIBSABUABaCnBhcmFtZXRlcjE=',
-            name: 'bool',
-            nullable: false,
-          )
-        }.withoutNulls.entries,
         widgetStates: {
           'textFieldText': debugSerializeParam(
             textController?.text,

+ 3 - 12
lib/components/filter_balk_component_widget.dart

@@ -17,12 +17,7 @@ import 'filter_balk_component_model.dart';
 export 'filter_balk_component_model.dart';
 
 class FilterBalkComponentWidget extends StatefulWidget {
-  const FilterBalkComponentWidget({
-    super.key,
-    bool? parameter1,
-  }) : this.parameter1 = parameter1 ?? false;
-
-  final bool parameter1;
+  const FilterBalkComponentWidget({super.key});
 
   @override
   State<FilterBalkComponentWidget> createState() =>
@@ -44,7 +39,7 @@ class _FilterBalkComponentWidgetState extends State<FilterBalkComponentWidget>
     super.initState();
     _model = createModel(context, () => FilterBalkComponentModel());
 
-    _model.textController ??= TextEditingController()
+    _model.textController ??= TextEditingController(text: FFAppState().zoekterm)
       ..addListener(() {
         debugLogWidgetClass(_model);
       });
@@ -399,11 +394,7 @@ class _FilterBalkComponentWidgetState extends State<FilterBalkComponentWidget>
           alignment: WrapAlignment.center,
           controller: _model.choiceChipsValueController ??=
               FormFieldController<List<String>>(
-            [
-              FFLocalizations.of(context).getText(
-                'u4ve4egb' /* Alles */,
-              )
-            ],
+            [FFAppState().datumFilter],
           ),
           wrapped: true,
         ),

+ 143 - 0
lib/components/kaart_tabel_uitgaan_comp_k_a_n_w_e_g_model.dart

@@ -0,0 +1,143 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/custom_code/widgets/index.dart' as custom_widgets;
+import 'kaart_tabel_uitgaan_comp_k_a_n_w_e_g_widget.dart'
+    show KaartTabelUitgaanCompKANWEGWidget;
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class KaartTabelUitgaanCompKANWEGModel
+    extends FlutterFlowModel<KaartTabelUitgaanCompKANWEGWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // Models for tagCategorieComponent dynamic component.
+  Map<String, FlutterFlowModel> tagCategorieComponentModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'logo': debugSerializeParam(
+            widget?.logo,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShQKDgoEbG9nbxIGOTY2ZzA0cgIIBFAAWgRsb2dv',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorie': debugSerializeParam(
+            widget?.categorie,
+            ParamType.String,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShsKEwoJY2F0ZWdvcmllEgY0bmhyazdyBBICCANQAFoJY2F0ZWdvcmll',
+            name: 'String',
+            nullable: true,
+          ),
+          'titel': debugSerializeParam(
+            widget?.titel,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShUKDwoFdGl0ZWwSBnJzZDN5anICCANQAFoFdGl0ZWw=',
+            name: 'String',
+            nullable: true,
+          ),
+          'datum': debugSerializeParam(
+            widget?.datum,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShUKDwoFZGF0dW0SBnJqdWduZnICCANQAFoFZGF0dW0=',
+            name: 'String',
+            nullable: true,
+          ),
+          'horecagelegenheid': debugSerializeParam(
+            widget?.horecagelegenheid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=SiEKGwoRaG9yZWNhZ2VsZWdlbmhlaWQSBmh4ZXh2dXICCANQAFoRaG9yZWNhZ2VsZWdlbmhlaWQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'adres': debugSerializeParam(
+            widget?.adres,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShUKDwoFYWRyZXMSBmFlOG9ueXICCANQAFoFYWRyZXM=',
+            name: 'String',
+            nullable: true,
+          ),
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShYKEAoGcGxhYXRzEgY3ZW85emRyAggDUABaBnBsYWF0cw==',
+            name: 'String',
+            nullable: true,
+          ),
+          'inhoud': debugSerializeParam(
+            widget?.inhoud,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+            searchReference:
+                'reference=ShYKEAoGaW5ob3VkEgZrYTNjMTRyAggDUABaBmluaG91ZA==',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'tagCategorieComponentModels (List<tagCategorieComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  tagCategorieComponentModels.length, (index) => '[$index]'),
+              tagCategorieComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+        searchReference:
+            'reference=OhtrYWFydFRhYmVsVWl0Z2FhbkNvbXBLQU5XRUdQAFoba2FhcnRUYWJlbFVpdGdhYW5Db21wS0FOV0VH',
+        widgetClassName: 'kaartTabelUitgaanCompKANWEG',
+      );
+}

+ 409 - 0
lib/components/kaart_tabel_uitgaan_comp_k_a_n_w_e_g_widget.dart

@@ -0,0 +1,409 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/custom_code/widgets/index.dart' as custom_widgets;
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'kaart_tabel_uitgaan_comp_k_a_n_w_e_g_model.dart';
+export 'kaart_tabel_uitgaan_comp_k_a_n_w_e_g_model.dart';
+
+class KaartTabelUitgaanCompKANWEGWidget extends StatefulWidget {
+  const KaartTabelUitgaanCompKANWEGWidget({
+    super.key,
+    this.logo,
+    this.categorie,
+    this.titel,
+    this.datum,
+    this.horecagelegenheid,
+    this.adres,
+    this.plaats,
+    this.inhoud,
+  });
+
+  final String? logo;
+  final List<String>? categorie;
+  final String? titel;
+  final String? datum;
+  final String? horecagelegenheid;
+  final String? adres;
+  final String? plaats;
+  final String? inhoud;
+
+  @override
+  State<KaartTabelUitgaanCompKANWEGWidget> createState() =>
+      _KaartTabelUitgaanCompKANWEGWidgetState();
+}
+
+class _KaartTabelUitgaanCompKANWEGWidgetState
+    extends State<KaartTabelUitgaanCompKANWEGWidget> with RouteAware {
+  late KaartTabelUitgaanCompKANWEGModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => KaartTabelUitgaanCompKANWEGModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(KaartTabelUitgaanCompKANWEGWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+    _model.tagCategorieComponentModels.clear();
+
+    return Row(
+      mainAxisSize: MainAxisSize.max,
+      children: [
+        Align(
+          alignment: AlignmentDirectional(1.0, 0.0),
+          child: Container(
+            width: MediaQuery.sizeOf(context).width * 0.3,
+            decoration: BoxDecoration(),
+            child: Align(
+              alignment: AlignmentDirectional(1.0, 0.0),
+              child: Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
+                child: Stack(
+                  alignment: AlignmentDirectional(1.0, 1.0),
+                  children: [
+                    Align(
+                      alignment: AlignmentDirectional(1.0, 0.0),
+                      child: Builder(
+                        builder: (context) {
+                          if (widget!.logo != '') {
+                            return ClipRRect(
+                              borderRadius: BorderRadius.circular(8.0),
+                              child: Image.network(
+                                widget!.logo!,
+                                height: 220.0,
+                                fit: BoxFit.fitHeight,
+                              ),
+                            );
+                          } else {
+                            return Icon(
+                              Icons.image_not_supported,
+                              color: FlutterFlowTheme.of(context).primaryText,
+                              size: 24.0,
+                            );
+                          }
+                        },
+                      ),
+                    ),
+                    Align(
+                      alignment: AlignmentDirectional(1.0, 1.0),
+                      child: Builder(
+                        builder: (context) {
+                          final categories = widget!.categorie?.toList() ?? [];
+                          _model.debugGeneratorVariables[
+                                  'categories${categories.length > 100 ? ' (first 100)' : ''}'] =
+                              debugSerializeParam(
+                            categories.take(100),
+                            ParamType.String,
+                            isList: true,
+                            link:
+                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanCompKANWEG',
+                            name: 'String',
+                            nullable: false,
+                          );
+                          debugLogWidgetClass(_model);
+
+                          return Row(
+                            mainAxisSize: MainAxisSize.max,
+                            mainAxisAlignment: MainAxisAlignment.end,
+                            crossAxisAlignment: CrossAxisAlignment.end,
+                            children: List.generate(categories.length,
+                                (categoriesIndex) {
+                              final categoriesItem =
+                                  categories[categoriesIndex];
+                              return Builder(builder: (_) {
+                                return DebugFlutterFlowModelContext(
+                                  rootModel: _model.rootModel,
+                                  parentModelCallback: (m) {
+                                    _model.tagCategorieComponentModels[
+                                        'Keybgq_${categoriesIndex}_of_${categories.length}'] = m;
+                                  },
+                                  child: TagCategorieComponentWidget(
+                                    key: Key(
+                                        'Keybgq_${categoriesIndex}_of_${categories.length}'),
+                                    categorieTag: categoriesItem,
+                                  ),
+                                );
+                              });
+                            }),
+                          );
+                        },
+                      ),
+                    ),
+                  ],
+                ),
+              ),
+            ),
+          ),
+        ),
+        Container(
+          decoration: BoxDecoration(),
+          child: Column(
+            mainAxisSize: MainAxisSize.max,
+            crossAxisAlignment: CrossAxisAlignment.start,
+            children: [
+              Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(6.0, 4.0, 0.0, 6.0),
+                child: Text(
+                  valueOrDefault<String>(
+                    widget!.titel,
+                    'Evenement',
+                  ),
+                  style: FlutterFlowTheme.of(context).titleLarge.override(
+                    font: GoogleFonts.roboto(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).titleLarge.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).titleLarge.fontStyle,
+                    ),
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).titleLarge.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).titleLarge.fontStyle,
+                    shadows: [
+                      Shadow(
+                        color: FlutterFlowTheme.of(context).secondaryText,
+                        offset: Offset(2.0, 2.0),
+                        blurRadius: 2.0,
+                      )
+                    ],
+                  ),
+                ),
+              ),
+              Align(
+                alignment: AlignmentDirectional(0.0, 0.0),
+                child: Padding(
+                  padding: EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0),
+                  child: Row(
+                    mainAxisSize: MainAxisSize.max,
+                    children: [
+                      Padding(
+                        padding:
+                            EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0),
+                        child: Icon(
+                          Icons.calendar_month,
+                          color: FlutterFlowTheme.of(context).primaryText,
+                          size: 24.0,
+                        ),
+                      ),
+                      Text(
+                        widget!.datum!,
+                        style: FlutterFlowTheme.of(context).titleSmall.override(
+                              font: GoogleFonts.roboto(
+                                fontWeight: FlutterFlowTheme.of(context)
+                                    .titleSmall
+                                    .fontWeight,
+                                fontStyle: FlutterFlowTheme.of(context)
+                                    .titleSmall
+                                    .fontStyle,
+                              ),
+                              letterSpacing: 0.0,
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .titleSmall
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .titleSmall
+                                  .fontStyle,
+                            ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+              Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0),
+                child: Row(
+                  mainAxisSize: MainAxisSize.max,
+                  children: [
+                    Padding(
+                      padding:
+                          EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0),
+                      child: Icon(
+                        Icons.add_business_rounded,
+                        color: FlutterFlowTheme.of(context).primaryText,
+                        size: 24.0,
+                      ),
+                    ),
+                    Text(
+                      widget!.horecagelegenheid!,
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.roboto(
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontStyle,
+                            ),
+                            letterSpacing: 0.0,
+                            fontWeight: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontWeight,
+                            fontStyle: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontStyle,
+                          ),
+                    ),
+                  ],
+                ),
+              ),
+              Row(
+                mainAxisSize: MainAxisSize.max,
+                children: [
+                  Padding(
+                    padding: EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0),
+                    child: Icon(
+                      Icons.location_on_sharp,
+                      color: FlutterFlowTheme.of(context).primaryText,
+                      size: 24.0,
+                    ),
+                  ),
+                  Text(
+                    widget!.adres!,
+                    style: FlutterFlowTheme.of(context).bodyMedium.override(
+                          font: GoogleFonts.roboto(
+                            fontWeight: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontWeight,
+                            fontStyle: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontStyle,
+                          ),
+                          letterSpacing: 0.0,
+                          fontWeight: FlutterFlowTheme.of(context)
+                              .bodyMedium
+                              .fontWeight,
+                          fontStyle:
+                              FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                        ),
+                  ),
+                  Padding(
+                    padding: EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 0.0, 0.0),
+                    child: AutoSizeText(
+                      widget!.plaats!,
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.roboto(
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontStyle,
+                            ),
+                            letterSpacing: 0.0,
+                            fontWeight: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontWeight,
+                            fontStyle: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontStyle,
+                          ),
+                      overflow: TextOverflow.ellipsis,
+                    ),
+                  ),
+                ],
+              ),
+              Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0),
+                child: Row(
+                  mainAxisSize: MainAxisSize.max,
+                  crossAxisAlignment: CrossAxisAlignment.start,
+                  children: [
+                    Align(
+                      alignment: AlignmentDirectional(0.0, -1.0),
+                      child: Padding(
+                        padding:
+                            EdgeInsetsDirectional.fromSTEB(3.0, 0.0, 6.0, 0.0),
+                        child: Icon(
+                          Icons.message,
+                          color: FlutterFlowTheme.of(context).primaryText,
+                          size: 24.0,
+                        ),
+                      ),
+                    ),
+                    Container(
+                      width: MediaQuery.sizeOf(context).width * 0.4,
+                      height: 80.0,
+                      child: custom_widgets.FromHTML(
+                        HTMLParameter: widget!.inhoud!,
+                        width: MediaQuery.sizeOf(context).width * 0.4,
+                        height: 80.0,
+                      ),
+                    ),
+                  ],
+                ),
+              ),
+            ],
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 142 - 0
lib/components/kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_model.dart

@@ -0,0 +1,142 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/custom_code/widgets/index.dart' as custom_widgets;
+import 'kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_widget.dart'
+    show KaartTabelUitgaanSCompKANWEGWidget;
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class KaartTabelUitgaanSCompKANWEGModel
+    extends FlutterFlowModel<KaartTabelUitgaanSCompKANWEGWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // Models for tagCategorieComponent dynamic component.
+  Map<String, FlutterFlowModel> tagCategorieComponentModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'titel': debugSerializeParam(
+            widget?.titel,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShUKDwoFdGl0ZWwSBjVva2QyMXICCANQAFoFdGl0ZWw=',
+            name: 'String',
+            nullable: true,
+          ),
+          'logo': debugSerializeParam(
+            widget?.logo,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShQKDgoEbG9nbxIGNzZxemxncgIIBFAAWgRsb2dv',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorie': debugSerializeParam(
+            widget?.categorie,
+            ParamType.String,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShsKEwoJY2F0ZWdvcmllEgZrN2djMm5yBBICCANQAFoJY2F0ZWdvcmll',
+            name: 'String',
+            nullable: true,
+          ),
+          'date': debugSerializeParam(
+            widget?.date,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShQKDgoEZGF0ZRIGMHZiaXhxcgIIA1AAWgRkYXRl',
+            name: 'String',
+            nullable: true,
+          ),
+          'horecagelegenheid': debugSerializeParam(
+            widget?.horecagelegenheid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=SiEKGwoRaG9yZWNhZ2VsZWdlbmhlaWQSBjVneDJqOXICCANQAFoRaG9yZWNhZ2VsZWdlbmhlaWQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'adres': debugSerializeParam(
+            widget?.adres,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShUKDwoFYWRyZXMSBjY3aWJqcnICCANQAFoFYWRyZXM=',
+            name: 'String',
+            nullable: true,
+          ),
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShYKEAoGcGxhYXRzEgZqajZiMGZyAggDUABaBnBsYWF0cw==',
+            name: 'String',
+            nullable: true,
+          ),
+          'inhoud': debugSerializeParam(
+            widget?.inhoud,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+            searchReference:
+                'reference=ShYKEAoGaW5ob3VkEgY5dnMwdWFyAggDUABaBmluaG91ZA==',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'tagCategorieComponentModels (List<tagCategorieComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  tagCategorieComponentModels.length, (index) => '[$index]'),
+              tagCategorieComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+        searchReference:
+            'reference=OhxrYWFydFRhYmVsVWl0Z2FhblNDb21wS0FOV0VHUABaHGthYXJ0VGFiZWxVaXRnYWFuU0NvbXBLQU5XRUc=',
+        widgetClassName: 'kaartTabelUitgaanSCompKANWEG',
+      );
+}

+ 429 - 0
lib/components/kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_widget.dart

@@ -0,0 +1,429 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/custom_code/widgets/index.dart' as custom_widgets;
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_model.dart';
+export 'kaart_tabel_uitgaan_s_comp_k_a_n_w_e_g_model.dart';
+
+class KaartTabelUitgaanSCompKANWEGWidget extends StatefulWidget {
+  const KaartTabelUitgaanSCompKANWEGWidget({
+    super.key,
+    this.titel,
+    this.logo,
+    this.categorie,
+    this.date,
+    this.horecagelegenheid,
+    this.adres,
+    this.plaats,
+    this.inhoud,
+  });
+
+  final String? titel;
+  final String? logo;
+  final List<String>? categorie;
+  final String? date;
+  final String? horecagelegenheid;
+  final String? adres;
+  final String? plaats;
+  final String? inhoud;
+
+  @override
+  State<KaartTabelUitgaanSCompKANWEGWidget> createState() =>
+      _KaartTabelUitgaanSCompKANWEGWidgetState();
+}
+
+class _KaartTabelUitgaanSCompKANWEGWidgetState
+    extends State<KaartTabelUitgaanSCompKANWEGWidget> with RouteAware {
+  late KaartTabelUitgaanSCompKANWEGModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => KaartTabelUitgaanSCompKANWEGModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(KaartTabelUitgaanSCompKANWEGWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+    _model.tagCategorieComponentModels.clear();
+
+    return Column(
+      mainAxisSize: MainAxisSize.max,
+      children: [
+        Padding(
+          padding: EdgeInsetsDirectional.fromSTEB(6.0, 4.0, 0.0, 0.0),
+          child: Text(
+            valueOrDefault<String>(
+              widget!.titel,
+              'Evenement',
+            ),
+            style: FlutterFlowTheme.of(context).titleLarge.override(
+              font: GoogleFonts.roboto(
+                fontWeight: FlutterFlowTheme.of(context).titleLarge.fontWeight,
+                fontStyle: FlutterFlowTheme.of(context).titleLarge.fontStyle,
+              ),
+              letterSpacing: 0.0,
+              fontWeight: FlutterFlowTheme.of(context).titleLarge.fontWeight,
+              fontStyle: FlutterFlowTheme.of(context).titleLarge.fontStyle,
+              shadows: [
+                Shadow(
+                  color: FlutterFlowTheme.of(context).secondaryText,
+                  offset: Offset(2.0, 2.0),
+                  blurRadius: 2.0,
+                )
+              ],
+            ),
+          ),
+        ),
+        Align(
+          alignment: AlignmentDirectional(0.0, -1.0),
+          child: Row(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Align(
+                alignment: AlignmentDirectional(1.0, 1.0),
+                child: Container(
+                  width: MediaQuery.sizeOf(context).width * 0.3,
+                  decoration: BoxDecoration(),
+                  child: Align(
+                    alignment: AlignmentDirectional(1.0, 0.0),
+                    child: Stack(
+                      alignment: AlignmentDirectional(1.0, 0.0),
+                      children: [
+                        Align(
+                          alignment: AlignmentDirectional(1.0, 0.0),
+                          child: Builder(
+                            builder: (context) {
+                              if (widget!.logo != '') {
+                                return ClipRRect(
+                                  borderRadius: BorderRadius.only(),
+                                  child: Image.network(
+                                    widget!.logo!,
+                                    height: 220.0,
+                                    fit: BoxFit.fitHeight,
+                                  ),
+                                );
+                              } else {
+                                return Icon(
+                                  Icons.image_not_supported,
+                                  color:
+                                      FlutterFlowTheme.of(context).primaryText,
+                                  size: 24.0,
+                                );
+                              }
+                            },
+                          ),
+                        ),
+                        Align(
+                          alignment: AlignmentDirectional(1.0, 1.0),
+                          child: Padding(
+                            padding: EdgeInsetsDirectional.fromSTEB(
+                                0.0, 150.0, 0.0, 0.0),
+                            child: Builder(
+                              builder: (context) {
+                                final categories =
+                                    widget!.categorie?.toList() ?? [];
+                                _model.debugGeneratorVariables[
+                                        'categories${categories.length > 100 ? ' (first 100)' : ''}'] =
+                                    debugSerializeParam(
+                                  categories.take(100),
+                                  ParamType.String,
+                                  isList: true,
+                                  link:
+                                      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kaartTabelUitgaanSCompKANWEG',
+                                  name: 'String',
+                                  nullable: false,
+                                );
+                                debugLogWidgetClass(_model);
+
+                                return Row(
+                                  mainAxisSize: MainAxisSize.max,
+                                  mainAxisAlignment: MainAxisAlignment.end,
+                                  crossAxisAlignment: CrossAxisAlignment.end,
+                                  children: List.generate(categories.length,
+                                      (categoriesIndex) {
+                                    final categoriesItem =
+                                        categories[categoriesIndex];
+                                    return Builder(builder: (_) {
+                                      return DebugFlutterFlowModelContext(
+                                        rootModel: _model.rootModel,
+                                        parentModelCallback: (m) {
+                                          _model.tagCategorieComponentModels[
+                                              'Keyf89_${categoriesIndex}_of_${categories.length}'] = m;
+                                        },
+                                        child: TagCategorieComponentWidget(
+                                          key: Key(
+                                              'Keyf89_${categoriesIndex}_of_${categories.length}'),
+                                          categorieTag: categoriesItem,
+                                        ),
+                                      );
+                                    });
+                                  }),
+                                );
+                              },
+                            ),
+                          ),
+                        ),
+                      ],
+                    ),
+                  ),
+                ),
+              ),
+              Align(
+                alignment: AlignmentDirectional(0.0, -1.0),
+                child: Container(
+                  decoration: BoxDecoration(),
+                  alignment: AlignmentDirectional(0.0, -1.0),
+                  child: Column(
+                    mainAxisSize: MainAxisSize.max,
+                    crossAxisAlignment: CrossAxisAlignment.start,
+                    children: [
+                      Align(
+                        alignment: AlignmentDirectional(0.0, 0.0),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          children: [
+                            Padding(
+                              padding: EdgeInsetsDirectional.fromSTEB(
+                                  3.0, 0.0, 6.0, 0.0),
+                              child: Icon(
+                                Icons.calendar_month,
+                                color: FlutterFlowTheme.of(context).primaryText,
+                                size: 24.0,
+                              ),
+                            ),
+                            Text(
+                              widget!.date!,
+                              style: FlutterFlowTheme.of(context)
+                                  .titleSmall
+                                  .override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleSmall
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleSmall
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleSmall
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleSmall
+                                        .fontStyle,
+                                  ),
+                            ),
+                          ],
+                        ),
+                      ),
+                      Padding(
+                        padding:
+                            EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          children: [
+                            Padding(
+                              padding: EdgeInsetsDirectional.fromSTEB(
+                                  3.0, 0.0, 6.0, 0.0),
+                              child: Icon(
+                                Icons.add_business_rounded,
+                                color: FlutterFlowTheme.of(context).primaryText,
+                                size: 24.0,
+                              ),
+                            ),
+                            Text(
+                              widget!.horecagelegenheid!,
+                              style: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontStyle,
+                                  ),
+                            ),
+                          ],
+                        ),
+                      ),
+                      Row(
+                        mainAxisSize: MainAxisSize.max,
+                        children: [
+                          Padding(
+                            padding: EdgeInsetsDirectional.fromSTEB(
+                                3.0, 0.0, 6.0, 0.0),
+                            child: Icon(
+                              Icons.location_on_sharp,
+                              color: FlutterFlowTheme.of(context).primaryText,
+                              size: 24.0,
+                            ),
+                          ),
+                          Text(
+                            widget!.adres!,
+                            style: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .override(
+                                  font: GoogleFonts.roboto(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .bodyMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .bodyMedium
+                                      .fontStyle,
+                                ),
+                          ),
+                          Padding(
+                            padding: EdgeInsetsDirectional.fromSTEB(
+                                8.0, 0.0, 0.0, 0.0),
+                            child: Text(
+                              widget!.plaats!,
+                              style: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontStyle,
+                                  ),
+                            ),
+                          ),
+                        ],
+                      ),
+                      Padding(
+                        padding:
+                            EdgeInsetsDirectional.fromSTEB(0.0, 2.0, 0.0, 2.0),
+                        child: Row(
+                          mainAxisSize: MainAxisSize.max,
+                          crossAxisAlignment: CrossAxisAlignment.start,
+                          children: [
+                            Align(
+                              alignment: AlignmentDirectional(0.0, -1.0),
+                              child: Padding(
+                                padding: EdgeInsetsDirectional.fromSTEB(
+                                    3.0, 0.0, 6.0, 0.0),
+                                child: Icon(
+                                  Icons.message,
+                                  color:
+                                      FlutterFlowTheme.of(context).primaryText,
+                                  size: 24.0,
+                                ),
+                              ),
+                            ),
+                            Container(
+                              width: MediaQuery.sizeOf(context).width * 0.4,
+                              height: 80.0,
+                              child: custom_widgets.FromHTML(
+                                HTMLParameter: widget!.inhoud!,
+                                width: MediaQuery.sizeOf(context).width * 0.4,
+                                height: 80.0,
+                              ),
+                            ),
+                          ],
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 1 - 0
lib/favorieten/favorieten_model.dart

@@ -4,6 +4,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:async';
 import 'dart:ui';

+ 77 - 2
lib/favorieten/favorieten_widget.dart

@@ -4,6 +4,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:async';
 import 'dart:ui';
@@ -238,7 +239,7 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                           ),
                           Tab(
                             text: FFLocalizations.of(context).getText(
-                              'ygk8aifq' /* Favoriete Gelegenheden */,
+                              'ygk8aifq' /* Favoriete gelegenheden */,
                             ),
                           ),
                           Tab(
@@ -353,6 +354,14 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                   builder: (context) {
                                     final favorietenAgendaItems =
                                         _model.favorietenAgenda.toList();
+                                    if (favorietenAgendaItems.isEmpty) {
+                                      return LegeLijstMeldingWidget(
+                                        nlTekst:
+                                            'Je persoonlijke agenda is nog leeg.',
+                                        enTekst:
+                                            'Your personal agenda is still empty.',
+                                      );
+                                    }
                                     _model.debugGeneratorVariables[
                                             'favorietenAgendaItems${favorietenAgendaItems.length > 100 ? ' (first 100)' : ''}'] =
                                         debugSerializeParam(
@@ -494,6 +503,14 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                       builder: (context) {
                                         final favorieteGemeenteItem =
                                             _model.favorietenGemeenten.toList();
+                                        if (favorieteGemeenteItem.isEmpty) {
+                                          return LegeLijstMeldingWidget(
+                                            nlTekst:
+                                                'Je volgt nog geen gemeenten. ',
+                                            enTekst:
+                                                'You are not following any municipalities yet.',
+                                          );
+                                        }
                                         _model.debugGeneratorVariables[
                                                 'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] =
                                             debugSerializeParam(
@@ -545,7 +562,7 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                                         .provincieSelectName =
                                                     getJsonField(
                                                   favorieteGemeenteItemItem,
-                                                  r'''$.parent_nid''',
+                                                  r'''$.parent_titel''',
                                                 ).toString();
                                                 safeSetState(() {});
 
@@ -657,6 +674,56 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                   ],
                                 ),
                               ),
+                              Padding(
+                                padding: EdgeInsets.all(16.0),
+                                child: InkWell(
+                                  splashColor: Colors.transparent,
+                                  focusColor: Colors.transparent,
+                                  hoverColor: Colors.transparent,
+                                  highlightColor: Colors.transparent,
+                                  onTap: () async {
+                                    context.pushNamed(
+                                      MijnProfielWidget.routeName,
+                                      queryParameters: {
+                                        'tabIndex': serializeParam(
+                                          3,
+                                          ParamType.int,
+                                        ),
+                                      }.withoutNulls,
+                                    );
+                                  },
+                                  child: Text(
+                                    FFLocalizations.of(context).getText(
+                                      '4j5eydc4' /* Wil je elke week de uitgaansag... */,
+                                    ),
+                                    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,
+                                        ),
+                                  ),
+                                ),
+                              ),
                             ],
                           ),
                           Column(
@@ -668,6 +735,14 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                     final favorieteHorecagelegenheid = _model
                                         .favorieteHorecagelegenheden
                                         .toList();
+                                    if (favorieteHorecagelegenheid.isEmpty) {
+                                      return LegeLijstMeldingWidget(
+                                        nlTekst:
+                                            'Je hebt nog geen favoriete gelegenheden. Tik op het hartje bij een zaak om hem hier te bewaren.',
+                                        enTekst:
+                                            'You have no favourite venues yet. Tap the heart on a venue to save it here.',
+                                      );
+                                    }
                                     _model.debugGeneratorVariables[
                                             'favorieteHorecagelegenheid${favorieteHorecagelegenheid.length > 100 ? ' (first 100)' : ''}'] =
                                         debugSerializeParam(

+ 24 - 0
lib/flutter_flow/custom_functions.dart

@@ -553,3 +553,27 @@ List<String> kloonBeelden(
   for (final item in waarde) if (item != null) uit.add(item.toString());
   return uit;
 }
+
+bool nieuwsbriefGelukt(dynamic resultaat) {
+  if (resultaat is! Map) return false;
+  return resultaat.containsKey('geabonneerd');
+}
+
+String tweetalig(
+  String nlText,
+  String enText,
+) {
+  final locales = WidgetsBinding.instance.platformDispatcher.locales;
+  for (final l in locales) {
+    if (l.languageCode == 'en') return enText;
+    if (l.languageCode == 'nl') return nlText;
+  }
+  return nlText;
+}
+
+String categorieGekozenTekst(List<String>? tids) {
+  final n = (tids ?? []).length;
+  if (n == 0) return 'Nog geen categorie gekozen';
+  if (n == 1) return '1 categorie gekozen';
+  return '$n categorieën gekozen';
+}

+ 607 - 0
lib/flutter_flow/flutter_flow_language_selector.dart

@@ -0,0 +1,607 @@
+/*
+ * Copyright (c) 2019 gomgom. https://www.gomgom.net
+ *
+ * Source code has been modified by FlutterFlow, Inc. and the below license 
+ * applies only to this file. Adapted from "language_picker" pub.dev package.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+import 'package:emoji_flag_converter/emoji_flag_converter.dart';
+import 'package:flutter/material.dart';
+
+class FlutterFlowLanguageSelector extends StatelessWidget {
+  const FlutterFlowLanguageSelector({
+    Key? key,
+    required this.currentLanguage,
+    required this.languages,
+    required this.onChanged,
+    this.width,
+    this.height,
+    this.backgroundColor,
+    this.borderColor = const Color(0xFF262D34),
+    this.borderRadius = 8.0,
+    this.textStyle,
+    this.hideFlags = false,
+    this.flagSize = 24.0,
+    this.flagTextGap = 8.0,
+    this.dropdownColor,
+    this.dropdownIconColor = const Color(0xFF14181B),
+    this.dropdownIcon,
+  }) : super(key: key);
+
+  final double? width;
+  final double? height;
+  final String currentLanguage;
+  final List<String> languages;
+  final Function(String) onChanged;
+  final Color? backgroundColor;
+  final Color? borderColor;
+  final double borderRadius;
+  final TextStyle? textStyle;
+  final bool hideFlags;
+  final double flagSize;
+  final double? flagTextGap;
+  final Color? dropdownColor;
+  final Color? dropdownIconColor;
+  final IconData? dropdownIcon;
+
+  @override
+  Widget build(BuildContext context) => Container(
+        width: width,
+        height: height,
+        child: _LanguagePickerDropdown(
+          currentLanguage: currentLanguage,
+          languages: _languageMap(languages.toSet()),
+          onChanged: onChanged,
+          backgroundColor: backgroundColor,
+          borderColor: borderColor,
+          borderRadius: borderRadius,
+          dropdownColor: dropdownColor,
+          dropdownIconColor: dropdownIconColor,
+          dropdownIcon: dropdownIcon,
+          itemBuilder: (language) => _LanguagePickerItem(
+            language: language.isoCode,
+            languages: languages,
+            textStyle: textStyle,
+            hideFlags: hideFlags,
+            flagSize: flagSize,
+            flagTextGap: flagTextGap,
+          ),
+        ),
+      );
+}
+
+class _LanguagePickerItem extends StatelessWidget {
+  const _LanguagePickerItem({
+    Key? key,
+    required this.language,
+    required this.languages,
+    this.textStyle,
+    this.hideFlags = false,
+    this.flagSize = 24.0,
+    this.flagTextGap = 8.0,
+  }) : super(key: key);
+
+  final String language;
+  final List<String> languages;
+  final TextStyle? textStyle;
+  final bool hideFlags;
+  final double flagSize;
+  final double? flagTextGap;
+
+  @override
+  Widget build(BuildContext context) {
+    final flagInfo = languageToCountryInfo[language];
+    Widget flagWidget = Container();
+    if (flagInfo is String) {
+      final flagEmoji = EmojiConverter.fromAlpha2CountryCode(flagInfo);
+      flagWidget = Padding(
+        padding: const EdgeInsets.only(bottom: 2.0),
+        child: Text(
+          flagEmoji,
+          style: const TextStyle(fontSize: 20.0),
+        ),
+      );
+    } else if (flagInfo is Map) {
+      final flagUrl = flagInfo['flag'] as String;
+      flagWidget = Image.network(
+        flagUrl,
+        width: 24,
+        height: 20,
+      );
+    }
+    flagWidget = Transform.scale(
+      scale: flagSize / 24.0,
+      child: Container(
+        width: 24,
+        child: flagWidget,
+      ),
+    );
+    return Row(
+      children: [
+        if (!hideFlags) ...[
+          flagWidget,
+          SizedBox(width: flagTextGap),
+        ],
+        Text(
+          _languageMap(languages.toSet())[language]?.name ?? '',
+          style: textStyle ??
+              const TextStyle(
+                color: Colors.white,
+                fontSize: 13,
+                fontWeight: FontWeight.normal,
+              ),
+        ),
+      ],
+    );
+  }
+}
+
+/// Provides a customizable [DropdownButton] for all languages
+class _LanguagePickerDropdown extends StatelessWidget {
+  const _LanguagePickerDropdown({
+    required this.itemBuilder,
+    required this.currentLanguage,
+    required this.onChanged,
+    required this.languages,
+    this.backgroundColor,
+    this.borderColor = const Color(0xFF262D34),
+    this.borderRadius = 8.0,
+    this.dropdownColor,
+    this.dropdownIconColor = const Color(0xFF14181B),
+    this.dropdownIcon,
+  });
+
+  /// This function will be called to build the child of DropdownMenuItem.
+  final Widget Function(Language) itemBuilder;
+
+  /// The current ISO ALPHA-2 code.
+  final String currentLanguage;
+
+  /// This function will be called whenever a Language item is selected.
+  final ValueChanged<String> onChanged;
+
+  /// List of languages available in this picker.
+  final Map<String, Language> languages;
+
+  final Color? backgroundColor;
+  final Color? borderColor;
+  final double borderRadius;
+  final Color? dropdownColor;
+  final Color? dropdownIconColor;
+  final IconData? dropdownIcon;
+
+  @override
+  Widget build(BuildContext context) {
+    List<DropdownMenuItem<String>> items = languages.values
+        .map(
+          (language) => DropdownMenuItem<String>(
+            value: language.isoCode,
+            child: itemBuilder(language),
+          ),
+        )
+        .toList();
+    return Container(
+      height: 44.0,
+      decoration: BoxDecoration(
+        color: backgroundColor,
+        border: Border.all(color: borderColor ?? Colors.transparent),
+        borderRadius: BorderRadius.circular(borderRadius),
+      ),
+      child: Padding(
+        padding: const EdgeInsets.symmetric(horizontal: 15.0),
+        child: Center(
+          child: DropdownButton<String>(
+            isExpanded: true,
+            underline: Container(),
+            dropdownColor: dropdownColor ?? backgroundColor,
+            focusColor: Colors.transparent,
+            iconEnabledColor: dropdownIconColor,
+            iconDisabledColor: dropdownIconColor,
+            icon: dropdownIcon != null
+                ? Icon(
+                    dropdownIcon,
+                    size: 18.0,
+                    color: dropdownIconColor,
+                  )
+                : null,
+            hint: const Text(
+              'Unset',
+              style: TextStyle(
+                color: Colors.red,
+                fontFamily: 'Product Sans',
+                fontStyle: FontStyle.italic,
+                fontSize: 15,
+              ),
+            ),
+            onChanged: (val) {
+              if (val != null) {
+                onChanged(val);
+              }
+            },
+            items: items,
+            value: currentLanguage.isNotEmpty ? currentLanguage : null,
+          ),
+        ),
+      ),
+    );
+  }
+}
+
+class Language {
+  Language(this.isoCode, this.name);
+
+  Language.fromMap(Map<String, String> map)
+      : name = map['name']!,
+        isoCode = map['isoCode']!;
+
+  final String name;
+  final String isoCode;
+}
+
+Map<String, Language> _languageMap(Set<String> languages) => Map.fromEntries(
+      _defaultLanguagesList
+          .where((element) => languages.contains(element['isoCode']))
+          .map((e) => MapEntry(e['isoCode']!, Language.fromMap(e))),
+    );
+
+final List<Map<String, String>> _defaultLanguagesList = [
+  {"isoCode": "aa", "name": "Afaraf"},
+  {"isoCode": "af", "name": "Afrikaans"},
+  {"isoCode": "ak", "name": "Akan"},
+  {"isoCode": "sq", "name": "Shqip"},
+  {"isoCode": "am", "name": "አማርኛ"},
+  {"isoCode": "ar", "name": "العربية"},
+  {"isoCode": "hy", "name": "Հայերեն"},
+  {"isoCode": "as", "name": "অসমীয়া"},
+  {"isoCode": "ay", "name": "Aymar"},
+  {"isoCode": "az", "name": "Azərbaycan"},
+  {"isoCode": "bm", "name": "Bamanankan"},
+  {"isoCode": "ba", "name": "Башҡорт теле"},
+  {"isoCode": "eu", "name": "Euskara, Euskera"},
+  {"isoCode": "be", "name": "Беларуская мова"},
+  {"isoCode": "bn", "name": "বাংলা"},
+  {"isoCode": "bh", "name": "भोजपुरी"},
+  {"isoCode": "bi", "name": "Bislama"},
+  {"isoCode": "nb", "name": "Norsk bokmål"},
+  {"isoCode": "bs", "name": "Bosanski jezik"},
+  {"isoCode": "br", "name": "Brezhoneg"},
+  {"isoCode": "bg", "name": "Български език"},
+  {"isoCode": "my", "name": "ဗမာစာ"},
+  {"isoCode": "ca", "name": "Català"},
+  {"isoCode": "km", "name": "ភាសាខ្មែរ"},
+  {"isoCode": "ch", "name": "Chamoru"},
+  {"isoCode": "ce", "name": "Нохчийн мотт"},
+  {"isoCode": "ny", "name": "chiCheŵa"},
+  {"isoCode": "zh_Hans", "name": "中文 (简体)"},
+  {"isoCode": "zh_Hant", "name": "中文 (繁體)"},
+  {"isoCode": "cv", "name": "чӑваш чӗлхи"},
+  {"isoCode": "cr", "name": "ᓀᐦᐃᔭᐍᐏᐣ"},
+  {"isoCode": "hr", "name": "Hrvatski jezik"},
+  {"isoCode": "cs", "name": "Čeština"},
+  {"isoCode": "da", "name": "Dansk"},
+  {"isoCode": "dv", "name": "ދިވެހި"},
+  {"isoCode": "nl", "name": "Nederlands"},
+  {"isoCode": "dz", "name": "རྫོང་ཁ"},
+  {"isoCode": "en", "name": "English"},
+  {"isoCode": "eo", "name": "Esperanto"},
+  {"isoCode": "et", "name": "Eesti"},
+  {"isoCode": "ee", "name": "Eʋegbe"},
+  {"isoCode": "fo", "name": "Føroyskt"},
+  {"isoCode": "fj", "name": "vosa Vakaviti"},
+  {"isoCode": "fi", "name": "Suomi"},
+  {"isoCode": "fr", "name": "Français"},
+  {"isoCode": "ff", "name": "Fulfulde"},
+  {"isoCode": "gd", "name": "Gàidhlig"},
+  {"isoCode": "gl", "name": "Galego"},
+  {"isoCode": "lg", "name": "Luganda"},
+  {"isoCode": "ka", "name": "ქართული"},
+  {"isoCode": "de", "name": "Deutsch"},
+  {"isoCode": "el", "name": "ελληνικά"},
+  {"isoCode": "gn", "name": "Avañe'ẽ"},
+  {"isoCode": "gu", "name": "ગુજરાતી"},
+  {"isoCode": "ht", "name": "Kreyòl ayisyen"},
+  {"isoCode": "ha", "name": "هَوُسَ"},
+  {"isoCode": "he", "name": "עברית"},
+  {"isoCode": "hz", "name": "Otjiherero"},
+  {"isoCode": "hi", "name": "हिन्दी"},
+  {"isoCode": "ho", "name": "Hiri Motu"},
+  {"isoCode": "hu", "name": "Magyar"},
+  {"isoCode": "is", "name": "Íslenska"},
+  {"isoCode": "io", "name": "Ido"},
+  {"isoCode": "ig", "name": "Asụsụ Igbo"},
+  {"isoCode": "id", "name": "Bahasa Indonesia"},
+  {"isoCode": "ia", "name": "Interlingua"},
+  {"isoCode": "ie", "name": "Interlingue"},
+  {"isoCode": "iu", "name": "ᐃᓄᒃᑎᑐᑦ"},
+  {"isoCode": "ik", "name": "Iñupiaq"},
+  {"isoCode": "ga", "name": "Gaeilge"},
+  {"isoCode": "it", "name": "Italiano"},
+  {"isoCode": "ja", "name": "日本語 (にほんご)"},
+  {"isoCode": "jv", "name": "ꦧꦱꦗꦮ"},
+  {"isoCode": "kl", "name": "Kalaallisut"},
+  {"isoCode": "kn", "name": "ಕನ್ನಡ"},
+  {"isoCode": "kr", "name": "Kanuri"},
+  {"isoCode": "ks", "name": "कश्मीरी"},
+  {"isoCode": "kk", "name": "қазақ тілі"},
+  {"isoCode": "ki", "name": "Gĩkũyũ"},
+  {"isoCode": "rw", "name": "Ikinyarwanda"},
+  {"isoCode": "ky", "name": "Кыргызча"},
+  {"isoCode": "kv", "name": "коми кыв"},
+  {"isoCode": "kg", "name": "Kikongo"},
+  {"isoCode": "ko", "name": "한국어"},
+  {"isoCode": "kj", "name": "Kuanyama"},
+  {"isoCode": "ku", "name": "Kurdî"},
+  {"isoCode": "lo", "name": "ພາສາລາວ"},
+  {"isoCode": "la", "name": "Latine"},
+  {"isoCode": "lv", "name": "Latviešu valoda"},
+  {"isoCode": "li", "name": "Limburgs"},
+  {"isoCode": "ln", "name": "Lingála"},
+  {"isoCode": "lt", "name": "Lietuvių kalba"},
+  {"isoCode": "lu", "name": "Tshiluba"},
+  {"isoCode": "lb", "name": "Lëtzebuergesch"},
+  {"isoCode": "mk", "name": "Македонски јазик"},
+  {"isoCode": "mg", "name": "Fiteny Malagasy"},
+  {"isoCode": "ms", "name": "Bahasa Melayu"},
+  {"isoCode": "ml", "name": "മലയാളം"},
+  {"isoCode": "mt", "name": "Malti"},
+  {"isoCode": "gv", "name": "Gaelg, Gailck"},
+  {"isoCode": "mi", "name": "te reo Māori"},
+  {"isoCode": "mr", "name": "मराठी"},
+  {"isoCode": "mh", "name": "Kajin M̧ajeļ"},
+  {"isoCode": "mn", "name": "Монгол хэл"},
+  {"isoCode": "na", "name": "Dorerin Naoero"},
+  {"isoCode": "nv", "name": "Diné bizaad"},
+  {"isoCode": "nd", "name": "Ndebele (Southern)"},
+  {"isoCode": "nr", "name": "Ndebele (Northern)"},
+  {"isoCode": "ng", "name": "Owambo"},
+  {"isoCode": "ne", "name": "नेपाली"},
+  {"isoCode": "se", "name": "Davvisámegiella"},
+  {"isoCode": "no", "name": "Norsk"},
+  {"isoCode": "nn", "name": "Norsk nynorsk"},
+  {"isoCode": "oc", "name": "Occitan"},
+  {"isoCode": "oj", "name": "ᐊᓂᔑᓈᐯᒧᐎᓐ"},
+  {"isoCode": "or", "name": "ଓଡ଼ିଆ"},
+  {"isoCode": "om", "name": "Afaan Oromoo"},
+  {"isoCode": "os", "name": "ирон æвзаг"},
+  {"isoCode": "pi", "name": "पाऴि"},
+  {"isoCode": "pa", "name": "ਪੰਜਾਬੀ"},
+  {"isoCode": "fa", "name": "فارسی"},
+  {"isoCode": "pl", "name": "Polski"},
+  {"isoCode": "pt", "name": "Português"},
+  {"isoCode": "ps", "name": "پښتو"},
+  {"isoCode": "qu", "name": "Runa Simi, Kichwa"},
+  {"isoCode": "ro", "name": "Română"},
+  {"isoCode": "rm", "name": "rumantsch grischun"},
+  {"isoCode": "rn", "name": "Ikirundi"},
+  {"isoCode": "ru", "name": "Русский"},
+  {"isoCode": "sm", "name": "gagana fa'a Samoa"},
+  {"isoCode": "sg", "name": "yângâ tî sängö"},
+  {"isoCode": "sa", "name": "संस्कृतम्"},
+  {"isoCode": "sc", "name": "Sardu"},
+  {"isoCode": "sr", "name": "српски језик"},
+  {"isoCode": "sn", "name": "chiShona"},
+  {"isoCode": "ii", "name": "ꆈꌠ꒿ Nuosuhxop"},
+  {"isoCode": "sd", "name": "सिन्धी"},
+  {"isoCode": "si", "name": "සිංහල"},
+  {"isoCode": "sk", "name": "Slovenský jazyk"},
+  {"isoCode": "sl", "name": "Slovenščina"},
+  {"isoCode": "so", "name": "Soomaaliga"},
+  {"isoCode": "st", "name": "Sesotho"},
+  {"isoCode": "es", "name": "Español"},
+  {"isoCode": "su", "name": "Basa Sunda"},
+  {"isoCode": "sw", "name": "Kiswahili"},
+  {"isoCode": "ss", "name": "SiSwati"},
+  {"isoCode": "sv", "name": "Svenska"},
+  {"isoCode": "tl", "name": "Tagalog"},
+  {"isoCode": "ty", "name": "Reo Tahiti"},
+  {"isoCode": "tg", "name": "тоҷикӣ"},
+  {"isoCode": "ta", "name": "தமிழ்"},
+  {"isoCode": "tt", "name": "татар теле"},
+  {"isoCode": "te", "name": "తెలుగు"},
+  {"isoCode": "th", "name": "ไทย"},
+  {"isoCode": "bo", "name": "བོད་ཡིག"},
+  {"isoCode": "ti", "name": "ትግርኛ"},
+  {"isoCode": "to", "name": "faka Tonga"},
+  {"isoCode": "ts", "name": "Xitsonga"},
+  {"isoCode": "tn", "name": "Setswana"},
+  {"isoCode": "tr", "name": "Türkçe"},
+  {"isoCode": "tk", "name": "Түркмен"},
+  {"isoCode": "tw", "name": "Twi"},
+  {"isoCode": "ug", "name": "ئۇيغۇرچە"},
+  {"isoCode": "uk", "name": "Українська"},
+  {"isoCode": "ur", "name": "اردو"},
+  {"isoCode": "uz", "name": "Oʻzbek"},
+  {"isoCode": "ve", "name": "Tshivenḓa"},
+  {"isoCode": "vi", "name": "Tiếng Việt"},
+  {"isoCode": "vo", "name": "Volapük"},
+  {"isoCode": "wa", "name": "Walon"},
+  {"isoCode": "cy", "name": "Cymraeg"},
+  {"isoCode": "fy", "name": "Frysk"},
+  {"isoCode": "wo", "name": "Wollof"},
+  {"isoCode": "xh", "name": "Xhosa"},
+  {"isoCode": "yi", "name": "ייִדיש"},
+  {"isoCode": "yo", "name": "Yorùbá"},
+  {"isoCode": "za", "name": "Saɯ cueŋƅ"},
+  {"isoCode": "zu", "name": "Zulu"},
+];
+
+final Map<String, dynamic> languageToCountryInfo = {
+  "aa": "dj",
+  "af": "za",
+  "ak": "gh",
+  "sq": "al",
+  "am": "et",
+  "ar": {
+    "proposed_iso_3166": "aa",
+    "flag":
+        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Flag_of_the_Arab_League.svg/400px-Flag_of_the_Arab_League.svg.png",
+    "name": "Arab League"
+  },
+  "hy": "am",
+  "ay": {
+    "proposed_iso_3166": "wh",
+    "flag":
+        "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Banner_of_the_Qulla_Suyu.svg/1920px-Banner_of_the_Qulla_Suyu.svg.png",
+    "name": "Wiphala"
+  },
+  "az": "az",
+  "bm": "ml",
+  "be": "by",
+  "bn": "bd",
+  "bi": "vu",
+  "bs": "ba",
+  "bg": "bg",
+  "my": "mm",
+  "ca": "ad",
+  "zh": "cn",
+  "hr": "hr",
+  "cs": "cz",
+  "da": "dk",
+  "dv": "mv",
+  "nl": "nl",
+  "dz": "bt",
+  "en": "gb",
+  "et": "ee",
+  "ee": {
+    "proposed_iso_3166": "ew",
+    "flag":
+        "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Flag_of_the_Ewe_people.svg/2880px-Flag_of_the_Ewe_people.svg.png",
+    "name": "Ewe"
+  },
+  "fj": "fj",
+  "fil": "ph",
+  "fi": "fi",
+  "fr": "fr",
+  "gaa": "gh",
+  "ka": "ge",
+  "kl": "gl",
+  "de": "de",
+  "el": "gr",
+  "gu": "in",
+  "ht": "ht",
+  "he": "il",
+  "hi": "in",
+  "ho": "pg",
+  "hu": "hu",
+  "is": "is",
+  "ig": "ng",
+  "id": "id",
+  "ga": "ie",
+  "it": "it",
+  "ja": "jp",
+  "kr": "ne",
+  "kk": "kz",
+  "km": "kh",
+  "kmb": "ao",
+  "rw": "rw",
+  "kg": "cg",
+  "ko": "kr",
+  "kj": "ao",
+  "ku": "iq",
+  "ky": "kg",
+  "lo": "la",
+  "la": "va",
+  "lv": "lv",
+  "ln": "cg",
+  "lt": "lt",
+  "lu": "cd",
+  "lb": "lu",
+  "mk": "mk",
+  "mg": "mg",
+  "ms": "my",
+  "mt": "mt",
+  "mi": "nz",
+  "mh": "mh",
+  "mn": "mn",
+  "mos": "bf",
+  "ne": "np",
+  "nd": "zw",
+  "nso": "za",
+  "no": "no",
+  "nb": "no",
+  "nn": "no",
+  "ny": "mw",
+  "pap": "aw",
+  "ps": "af",
+  "fa": "ir",
+  "pl": "pl",
+  "pt": "pt",
+  "pa": "in",
+  "qu": "wh",
+  "ro": "ro",
+  "rm": "ch",
+  "rn": "bi",
+  "ru": "ru",
+  "sg": "cf",
+  "sr": "rs",
+  "srr": "sn",
+  "sn": "zw",
+  "si": "lk",
+  "sk": "sk",
+  "sl": "si",
+  "so": "so",
+  "snk": "sn",
+  "nr": "za",
+  "st": "ls",
+  "es": "es",
+  "sw": {
+    "proposed_iso_3166": "sw",
+    "flag":
+        "https://upload.wikimedia.org/wikipedia/commons/d/de/Flag_of_Swahili.gif",
+    "name": "Swahili"
+  },
+  "ss": "sz",
+  "sv": "se",
+  "tl": "ph",
+  "tg": "tj",
+  "ta": "lk",
+  "te": "in",
+  "tet": "tl",
+  "th": "th",
+  "ti": "er",
+  "tpi": "pg",
+  "ts": "za",
+  "tn": "bw",
+  "tr": "tr",
+  "tk": "tm",
+  "uk": "ua",
+  "umb": "ao",
+  "ur": "pk",
+  "uz": "uz",
+  "ve": "za",
+  "vi": "vn",
+  "cy": "gb",
+  "wo": "sn",
+  "xh": "za",
+  "yo": {
+    "proposed_iso_3166": "yo",
+    "flag":
+        "https://upload.wikimedia.org/wikipedia/commons/0/04/Flag_of_the_Yoruba_people.svg",
+    "name": "Yoruba"
+  },
+  "zu": "za",
+  // Custom
+  "zh_Hans": "cn",
+  "zh_Hant": "cn",
+  "fo": "fo",
+  "bo": "bo",
+  "to": "to",
+};

+ 70 - 663
lib/flutter_flow/internationalization.dart

@@ -152,7 +152,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'pj545url': {
       'nl': 'Veld wissen',
-      'en': 'Erase field',
+      'en': 'Copy to a new activity',
     },
     't8h5f8ir': {
       'nl': 'Wachtwoord',
@@ -187,7 +187,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'jwojezxv': {
       'nl': 'Agenda',
-      'en': 'User',
+      'en': 'Agenda',
     },
     'pedeshok': {
       'nl': 'Info',
@@ -360,9 +360,15 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Stel in als standaard',
       'en': 'Set as default',
     },
+    '4j5eydc4': {
+      'nl':
+          'Wil je elke week de uitgaansagenda op basis van je favoriete gemeenten ontvangen? Zet hier de nieuwsbrief aan!',
+      'en':
+          'Want the weekly agenda for your favourite municipalities by email? Turn the newsletter on here!',
+    },
     'ygk8aifq': {
-      'nl': 'Favoriete Gelegenheden',
-      'en': 'Favorite Establishment',
+      'nl': 'Favoriete gelegenheden',
+      'en': 'Favourite venues',
     },
     '2nyldbpj': {
       'nl': 'Gebruiker',
@@ -437,9 +443,9 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Bekijk alles',
       'en': 'See all',
     },
-    'oxse6aci': {
-      'nl': 'Kopie',
-      'en': 'Copy',
+    '8mxemaqc': {
+      'nl': 'Kopieer naar een nieuw evenement',
+      'en': 'Copy to a new activity',
     },
     'aiokgolu': {
       'nl': 'Mijn horecagelegenheden',
@@ -470,9 +476,9 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Bekijk alles',
       'en': 'See all',
     },
-    'wcyy4pao': {
-      'nl': 'Kopie',
-      'en': 'Copy',
+    'adjt2leo': {
+      'nl': 'Kopieer naar een nieuwe activiteit',
+      'en': 'Copy to a new activity',
     },
     '5iw84w8w': {
       'nl': 'Mijn gemeenten (stadsrechten)',
@@ -490,6 +496,10 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Account',
       'en': 'Account',
     },
+    'zlpb2nvy': {
+      'nl': 'Taal / Language',
+      'en': 'Taal / Language',
+    },
     '0sxtqp61': {
       'nl': 'Wachtwoord wijzigen',
       'en': 'Change password',
@@ -575,9 +585,9 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'i0ij4drx': {
       'nl':
-          'Let op: de categorie bepaalt in welke overzichten je activiteit verschijnt. Kies er minstens een - zonder categorie is je activiteit nergens terug te vinden.',
+          'Let op: de categorie bepaalt in welke overzichten je activiteit verschijnt. Kies er minstens een - zonder categorie is je activiteit nergens terug te vinden. Je kunt er meerdere kiezen; tik naast de lijst om die weer te sluiten.',
       'en':
-          'Note: the category decides which listings your activity appears in. Pick at least one - without a category your activity won\'t show up anywhere.',
+          'Note: the category decides which listings your activity appears in. Pick at least one - without a category your activity won\'t show up anywhere. You can pick more than one; tap outside the list to close it.',
     },
     'or5fd9n1': {
       'nl': 'Selecteer...',
@@ -864,9 +874,9 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'j68hqlk7': {
       'nl':
-          'Let op: de categorie bepaalt in welke overzichten je evenement verschijnt. Kies er minstens een - zonder categorie is je evenement nergens terug te vinden.',
+          'Let op: de categorie bepaalt in welke overzichten je evenement verschijnt. Kies er minstens een - zonder categorie is je evenement nergens terug te vinden. Je kunt er meerdere kiezen; tik naast de lijst om die weer te sluiten.',
       'en':
-          'Note: the category decides which listings your event appears in. Pick at least one - without a category your event won\'t show up anywhere.',
+          'Note: the category decides which listings your event appears in. Pick at least one - without a category your event won\'t show up anywhere. You can pick more than one; tap outside the list to close it.',
     },
     '2hitlrxa': {
       'nl': 'Select...',
@@ -996,10 +1006,6 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Logo kiezen',
       'en': 'Select logo',
     },
-    'ml0k1fmv': {
-      'nl': 'Uit fotoboek',
-      'en': 'From my photos',
-    },
     'hqwm9set': {
       'nl': 'Foto\'s kiezen',
       'en': 'Select photos',
@@ -1085,519 +1091,11 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Kopie',
       'en': 'Copy',
     },
-    'xyig2ny4': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // selectprovinciegemeenteCopy
-  {
-    '65pfbst3': {
-      'nl': 'Kies je gemeente',
-      'en': 'Select Municipality',
-    },
-    'e32fcx08': {
-      'nl': 'Je ziet dan het uitgaansnieuws van die gemeente in het menu.',
-      'en': 'You will see go out news of your municipality in the menu',
-    },
-    'y15ldzxq': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // PUitgaanPageCopy
-  {
-    '5yju0t3t': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // homeCopy
-  {
-    't10scn4k': {
-      'nl': 'Zoek op titel',
-      'en': 'Select on title',
-    },
-    'jr5t1q8k': {
-      'nl': 'Uitgaan',
-      'en': 'Go Out',
-    },
-    '893fbr6o': {
-      'nl': 'Activiteiten',
-      'en': 'Cityactivities',
-    },
-    '3cb4khdt': {
-      'nl': 'Cultuur & Info',
-      'en': 'Culture & Info',
-    },
-    'mk169bk4': {
-      'nl': 'Films',
-      'en': 'Movies',
-    },
-    'xsbenpgl': {
-      'nl': 'Jeugd',
-      'en': 'Youth',
-    },
-    'uhhbyicc': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // mijnProfielCopy
-  {
-    't5in39ep': {
-      'nl': 'Mijn evenementen',
-      'en': 'My events',
-    },
-    'z5raallt': {
-      'nl': 'Komende evenementen',
-      'en': 'Upcoming events',
-    },
-    'k5ygonp7': {
-      'nl': 'Bekijk alles',
-      'en': '+ Add',
-    },
-    'axder404': {
-      'nl': 'Mijn horecagelegenheden',
-      'en': 'My Establishments',
-    },
-    '496wst30': {
-      'nl': 'Zaak toevoegen',
-      'en': 'Add a venue',
-    },
-    'balt74l1': {
-      'nl': '+ Evenement aanmaken',
-      'en': '+ Create event',
-    },
-    'i2y2tc9p': {
-      'nl':
-          'Een horecagelegenheid toevoegen kan alleen op uitgaanskrant.com website.',
-      'en': 'Adding a venue is only possible on uitgaanskrant.com.',
-    },
-    'vkwmzlrz': {
-      'nl': 'Stadseditor',
-      'en': 'City editor',
-    },
-    'zz4kibls': {
-      'nl': 'Komende activiteiten',
-      'en': 'Upcoming activities',
-    },
-    '5kornrez': {
-      'nl': 'Bekijk alles',
-      'en': '+ Add',
-    },
-    '91d2zqc5': {
-      'nl': 'Mijn gemeenten',
-      'en': 'My municipalities',
-    },
-    'dhfkplqm': {
-      'nl': '+ Activiteit',
-      'en': '+ Activity',
-    },
-    'cgx5wrx2': {
-      'nl': '+ Activiteit aanmaken',
-      'en': '+ Create activity',
-    },
-    '15w5y1ft': {
-      'nl': 'Account',
-      'en': 'Account',
-    },
-    '8q1jrs91': {
-      'nl': 'Wachtwoord wijzigen',
-      'en': 'Change password',
-    },
-    '4h4a5sgq': {
-      'nl': '',
-      'en': '',
-    },
-    '708qxgha': {
-      'nl': 'Account verwijderen',
-      'en': 'Delete account',
-    },
-    '6i0pl3l6': {
-      'nl': '',
-      'en': '',
-    },
-    'ypv23f3y': {
-      'nl': 'Uitloggen',
-      'en': 'Log out',
-    },
-    'x40c41s4': {
-      'nl': '',
-      'en': '',
-    },
-    'x3mchaxm': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // mijnProfielCopy2
-  {
-    'va061bjn': {
-      'nl': 'Mijn evenementen',
-      'en': 'My events',
-    },
-    'zvapioy2': {
-      'nl': 'Komende evenementen',
-      'en': 'Upcoming events',
-    },
-    'rodsyxvt': {
-      'nl': 'Bekijk alles',
-      'en': '+ Add',
-    },
-    'piqrgbaf': {
-      'nl': 'Mijn horecagelegenheden',
-      'en': 'My Establishments',
-    },
-    'b3i6io1x': {
-      'nl': 'Zaak toevoegen',
-      'en': 'Add a venue',
-    },
-    'qgi089l9': {
-      'nl': '+ Evenement aanmaken',
-      'en': '+ Create event',
-    },
-    'id14znhf': {
-      'nl':
-          'Een horecagelegenheid toevoegen kan alleen op uitgaanskrant.com website.',
-      'en': 'Adding a venue is only possible on uitgaanskrant.com.',
-    },
-    'r8f6ewm7': {
-      'nl': 'Stadseditor',
-      'en': 'City editor',
-    },
-    'h7a6ja8e': {
-      'nl': 'Komende activiteiten',
-      'en': 'Upcoming activities',
-    },
-    'woqhogv4': {
-      'nl': 'Bekijk alles',
-      'en': '+ Add',
-    },
-    '9gsjp3be': {
-      'nl': 'Mijn gemeenten',
-      'en': 'My municipalities',
-    },
-    'hck4736z': {
-      'nl': '+ Activiteit',
-      'en': '+ Activity',
-    },
-    '6sxzz4nk': {
-      'nl': '+ Activiteit aanmaken',
-      'en': '+ Create activity',
-    },
-    'i9pes7fo': {
-      'nl': 'Account',
-      'en': 'Account',
-    },
-    'xirkit3t': {
-      'nl': 'Wachtwoord wijzigen',
-      'en': 'Change password',
-    },
-    'c50ntd3o': {
-      'nl': '',
-      'en': '',
-    },
-    '2osaxr0d': {
-      'nl': 'Account verwijderen',
-      'en': 'Delete account',
-    },
-    'mrepbc3h': {
-      'nl': '',
-      'en': '',
-    },
-    'lbig1sux': {
-      'nl': 'Uitloggen',
-      'en': 'Log out',
-    },
-    '9k2ps995': {
-      'nl': '',
-      'en': '',
-    },
-    'k8ww2s03': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // mijnProfielCopy3
-  {
-    '0az5bgql': {
-      'nl': 'Mijn evenementen',
-      'en': 'My events',
-    },
-    '5e16n0ji': {
-      'nl': 'Komende evenementen',
-      'en': 'Upcoming events',
-    },
-    'dk6eb1of': {
-      'nl': 'Bekijk alles',
-      'en': '+ Add',
-    },
-    'cn3xicp9': {
-      'nl': 'Mijn horecagelegenheden',
-      'en': 'My Establishments',
-    },
-    '8qgfa8ku': {
-      'nl': 'Zaak toevoegen',
-      'en': 'Add a venue',
-    },
-    'qfynixjg': {
-      'nl': '+ Evenement aanmaken',
-      'en': '+ Create event',
-    },
-    'hf2fvcu7': {
-      'nl':
-          'Een horecagelegenheid toevoegen kan alleen op uitgaanskrant.com website.',
-      'en': 'Adding a venue is only possible on uitgaanskrant.com.',
-    },
-    'bycyzop9': {
-      'nl': 'Stadseditor',
-      'en': 'City editor',
-    },
-    'd5vb6hjo': {
-      'nl': 'Eigen activiteiten',
-      'en': 'Own activities',
-    },
-    'esah11ij': {
-      'nl': 'Bekijk alles',
-      'en': 'See all',
-    },
-    'h00zgu2g': {
-      'nl': 'Mijn gemeenten (stadsrechten)',
-      'en': 'My municipalities (city permissions)',
-    },
-    '6okkjs8g': {
-      'nl': '+ Activiteit',
-      'en': '+ Activity',
-    },
-    'f9k49g0a': {
-      'nl': '+ Activiteit aanmaken',
-      'en': '+ Create activity',
-    },
-    '4kkrwxap': {
-      'nl': 'Account',
-      'en': 'Account',
-    },
-    'e4lg75ri': {
-      'nl': 'Wachtwoord wijzigen',
-      'en': 'Change password',
-    },
-    '6n785pof': {
-      'nl': '',
-      'en': '',
-    },
-    'vzlhnjsp': {
-      'nl': 'Account verwijderen',
-      'en': 'Delete account',
-    },
-    '5fppai4z': {
-      'nl': '',
-      'en': '',
-    },
-    'vocsrhdt': {
-      'nl': 'Uitloggen',
-      'en': 'Log out',
-    },
-    '9rse8dhu': {
-      'nl': '',
-      'en': '',
-    },
-    'w2nycf56': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // PUitgaanPageCopy2
-  {
-    'uwkxhuv3': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // PUitgaanPageCopy3
-  {
-    'ibwugx4s': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // favorietenCopy
-  {
-    'r3jmjes0': {
-      'nl': 'Persoonlijke agenda',
-      'en': 'Personal Calendar',
-    },
-    '9663yd5u': {
-      'nl': 'Favoriete gemeenten',
-      'en': 'Favorite Municipality',
+    'q8einmt3': {
+      'nl': 'Kopieer naar een nieuw evenement',
+      'en': 'Copy to a new activity',
     },
-    'rqx06dvg': {
-      'nl': 'De gemeentes die je hebt gemarkeerd als favoriet.',
-      'en': 'Municipalities markt as favorite.',
-    },
-    '0hg4f6cc': {
-      'nl': 'Stel in als standaard',
-      'en': 'Set as default',
-    },
-    'my56hdxf': {
-      'nl': 'Favoriete Gelegenheden',
-      'en': 'Favorite Establishment',
-    },
-    '93djrknu': {
-      'nl': 'Gebruiker',
-      'en': 'User',
-    },
-    'rii3sn61': {
-      'nl': 'Uitloggen',
-      'en': 'Log out',
-    },
-    'ngxkjpud': {
-      'nl': '',
-      'en': '',
-    },
-    'th84393g': {
-      'nl': 'Mijn profiel',
-      'en': 'My Profile',
-    },
-    'pyslrr89': {
-      'nl': '',
-      'en': '',
-    },
-    'p41utigx': {
-      'nl': 'Wachtwoord wijzigen',
-      'en': 'Change password',
-    },
-    'ty76liju': {
-      'nl': '',
-      'en': '',
-    },
-    'z9yybn5o': {
-      'nl': 'Account verwijderen',
-      'en': 'Delete account',
-    },
-    'cphf2zn9': {
-      'nl': '',
-      'en': '',
-    },
-    'x35m3h0m': {
-      'nl': 'Stadsactiviteit aanmaken',
-      'en': 'Create city activity',
-    },
-    'z4lbp3ln': {
-      'nl':
-          'Met een account bewaar je favoriete gemeenten en gelegenheden, en krijg je een agenda per mail.',
-      'en':
-          'With an account you save your favourite municipalities and venues, and get an agenda by email.',
-    },
-    '60ajdvxl': {
-      'nl': 'Account aanmaken',
-      'en': 'Create account',
-    },
-    '1zbua9ln': {
-      'nl': 'Inloggen',
-      'en': 'Log in',
-    },
-    'avh9pubi': {
-      'nl': 'Home',
-      'en': 'Home',
-    },
-  },
-  // mijnProfielCopy4
-  {
-    'l6uay90d': {
-      'nl': 'Wachtwoord wijzigen',
-      'en': 'Change password',
-    },
-    '8400po0r': {
-      'nl': '',
-      'en': '',
-    },
-    '7y2g23h5': {
-      'nl': 'Account verwijderen',
-      'en': 'Delete account',
-    },
-    'cjerw8cx': {
-      'nl': '',
-      'en': '',
-    },
-    'twwekzbi': {
-      'nl': 'Uitloggen',
-      'en': 'Log out',
-    },
-    'bdshscok': {
-      'nl': '',
-      'en': '',
-    },
-    'pb6norml': {
-      'nl': 'Mijn evenementen',
-      'en': 'My events',
-    },
-    'p1789zud': {
-      'nl': 'Komende evenementen',
-      'en': 'Upcoming events',
-    },
-    'mkoquw3y': {
-      'nl': 'Bekijk alles',
-      'en': 'See all',
-    },
-    'u6r6mmfb': {
-      'nl': 'Kopie',
-      'en': '',
-    },
-    'tn5cqdum': {
-      'nl': 'Mijn horecagelegenheden',
-      'en': 'My Establishments',
-    },
-    'xb2fb8g8': {
-      'nl': 'Zaak toevoegen',
-      'en': 'Add a venue',
-    },
-    'x9pt12s1': {
-      'nl': '+ Evenement aanmaken',
-      'en': '+ Create event',
-    },
-    '9wjo1lhh': {
-      'nl':
-          'Een horecagelegenheid toevoegen kan alleen op uitgaanskrant.com website.',
-      'en': 'Adding a venue is only possible on uitgaanskrant.com.',
-    },
-    'xg73samc': {
-      'nl': 'Stadseditor',
-      'en': 'City editor',
-    },
-    'j9q9tc04': {
-      'nl': 'Eigen activiteiten',
-      'en': 'Own activities',
-    },
-    '42wjk5cx': {
-      'nl': 'Bekijk alles',
-      'en': 'See all',
-    },
-    'gvv1wg45': {
-      'nl': 'Kopie',
-      'en': '',
-    },
-    'pjn3obdr': {
-      'nl': 'Mijn gemeenten (stadsrechten)',
-      'en': 'My municipalities (city permissions)',
-    },
-    '8lo2kanm': {
-      'nl': '+ Activiteit',
-      'en': '+ Activity',
-    },
-    'wj5cpfa3': {
-      'nl': '+ Activiteit aanmaken',
-      'en': '+ Create activity',
-    },
-    '44khw1se': {
-      'nl': 'Account',
-      'en': 'Account',
-    },
-    'cbpf2ypy': {
-      'nl': 'Tab 4',
-      'en': '',
-    },
-    'ezw81k0w': {
+    'xyig2ny4': {
       'nl': 'Home',
       'en': 'Home',
     },
@@ -1879,7 +1377,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'jxlwje5u': {
       'nl': 'Bezorgen',
-      'en': 'Opening hours',
+      'en': 'Delivery',
     },
     'uje210t3': {
       'nl': 'Online Bestellen',
@@ -1887,11 +1385,11 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'usg8k534': {
       'nl': 'Bezorgt in',
-      'en': 'Opening hours',
+      'en': 'Delivers to',
     },
     'paqq93tp': {
       'nl': 'Betaalmogelijkheden',
-      'en': 'Opening hours',
+      'en': 'Payment options',
     },
   },
   // EvenementInfo
@@ -1931,7 +1429,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': ', ',
     },
   },
-  // PUitgaantabelKaartComponentOrgineelMetKaartjeerin
+  // PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEG
   {
     'pvxwv62s': {
       'nl': ', ',
@@ -1949,89 +1447,6 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': 'Soon more...',
     },
   },
-  // SelectStateDropDownComponentCopy
-  {
-    '77lpcqsw': {
-      'nl': 'Selecteer...',
-      'en': 'Select...',
-    },
-    'tcad2889': {
-      'nl': 'Zoek...',
-      'en': 'Search...',
-    },
-    'noxrq58s': {
-      'nl': 'Optie 1',
-      'en': 'Option 1',
-    },
-    'nk16nnug': {
-      'nl': 'Optie 2',
-      'en': 'Option 2',
-    },
-    'ts39t65q': {
-      'nl': 'Optie 3',
-      'en': 'Option 3',
-    },
-    '4gdiph5w': {
-      'nl': 'Selecteer...',
-      'en': 'Select...',
-    },
-    'msk8hupv': {
-      'nl': 'Zoek...',
-      'en': 'Search...',
-    },
-    'abyteish': {
-      'nl': 'Optie 1',
-      'en': 'Option 1',
-    },
-    '8pdyfi7l': {
-      'nl': 'Optie 2',
-      'en': 'Option 2',
-    },
-    'kvz82v6t': {
-      'nl': 'Optie 3',
-      'en': 'Option 3',
-    },
-    '0wx6f4vm': {
-      'nl': 'Gemeente volgen',
-      'en': 'Follow Municipality',
-    },
-    '611m1d6v': {
-      'nl': 'Je volgt deze gemeente',
-      'en': 'Municipality favorite',
-    },
-    'k4emzqst': {
-      'nl':
-          'Bij favoriete gemeenten krijg je een agenda per mail met daarin alle evenementen uit die favoriete gemeenten.',
-      'en': 'Get a weekly mail of all your favorite municipalities.',
-    },
-    'kf61i0j1': {
-      'nl': 'Toepassen',
-      'en': 'Apply',
-    },
-  },
-  // FilterBalkKanweg
-  {
-    'h0n7ccwl': {
-      'nl': 'Alles',
-      'en': '',
-    },
-    'jen5lw4o': {
-      'nl': 'Vandaag',
-      'en': '',
-    },
-    '9lh4g9zu': {
-      'nl': 'Weekend',
-      'en': '',
-    },
-    'l8a8sym1': {
-      'nl': 'Deze week',
-      'en': '',
-    },
-    'u11lmihp': {
-      'nl': 'Alles',
-      'en': '',
-    },
-  },
   // FilterBalkComponent
   {
     'lv9f2gi8': {
@@ -2054,102 +1469,94 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Deze week',
       'en': 'This week',
     },
-    'u4ve4egb': {
-      'nl': 'Alles',
-      'en': 'All',
-    },
   },
-  // FilterBalkComponentCopy
+  // FotoboekGridComponent
   {
-    '5s1g7v3i': {
-      'nl': 'Zoek op titel',
-      'en': '',
-    },
-    'xpjj7kgi': {
-      'nl': 'Alles',
-      'en': '',
-    },
-    'pxt221x5': {
-      'nl': 'Vandaag',
-      'en': '',
-    },
-    'n97mi3o5': {
-      'nl': 'Weekend',
-      'en': '',
-    },
-    'dq6am1ts': {
-      'nl': 'Deze week',
-      'en': '',
-    },
-    'y9dudw29': {
-      'nl': 'Alles',
+    'p5wf8u4i': {
+      'nl': 'TextField',
       'en': '',
     },
   },
-  // SelectStateDropDownComponentCopy2
+  // SelectStateDropDownComponentCopy
   {
-    'h6zpqu1c': {
+    'txkditf4': {
       'nl': 'Selecteer...',
       'en': 'Select...',
     },
-    'bdd0bxgv': {
+    'ypld4iq2': {
       'nl': 'Zoek...',
       'en': 'Search...',
     },
-    'fh7iqwfn': {
+    'k00m24wg': {
       'nl': 'Optie 1',
       'en': 'Option 1',
     },
-    'zmiqb6wr': {
+    'tlk99rwf': {
       'nl': 'Optie 2',
       'en': 'Option 2',
     },
-    'krodmbsk': {
+    'dk32bqxp': {
       'nl': 'Optie 3',
       'en': 'Option 3',
     },
-    '0hum51dr': {
+    'vlzm5jyx': {
       'nl': 'Selecteer...',
       'en': 'Select...',
     },
-    'hzympe3e': {
+    '4esb19tn': {
       'nl': 'Zoek...',
       'en': 'Search...',
     },
-    '2ivcvihn': {
+    '6cawk34p': {
       'nl': 'Optie 1',
       'en': 'Option 1',
     },
-    'xm8f0di6': {
+    '98cgbc70': {
       'nl': 'Optie 2',
       'en': 'Option 2',
     },
-    'w79gfvtp': {
+    'nmemzvtx': {
       'nl': 'Optie 3',
       'en': 'Option 3',
     },
-    'pjqf5chw': {
+    '2f323qec': {
       'nl': 'Maak favoriet',
       'en': 'Add to favorites',
     },
-    'dsr2u48c': {
+    's7o5u4b3': {
       'nl': 'Favoriet',
       'en': 'Favorite',
     },
-    '3d6fbqkh': {
+    'wx831c9t': {
       'nl': 'Toepassen',
       'en': 'Apply',
     },
-    '57ojwke7': {
+    'vuvjv4i1': {
       'nl': 'of kies een favoriet',
       'en': 'or pick a favorite',
     },
   },
-  // FotoboekGridComponent
+  // FilterBalkComponentCopy
   {
-    'p5wf8u4i': {
-      'nl': 'TextField',
-      'en': '',
+    'z4698a7h': {
+      'nl': 'Zoek op titel',
+      'en': 'Search by title',
+    },
+    'h141067r': {
+      'nl': 'Alles',
+      'en': 'All',
+    },
+    'nghzaz2o': {
+      'nl': 'Vandaag',
+      'en': 'Today',
+    },
+    'jjcc18nr': {
+      'nl': 'Weekend',
+      'en': 'Weekend',
+    },
+    'bv6ozwth': {
+      'nl': 'Deze week',
+      'en': 'This week',
     },
   },
   // Miscellaneous

+ 7 - 99
lib/flutter_flow/nav/nav.dart

@@ -58,27 +58,7 @@ const debugRouteLinkMap = {
   '/thuisBezorgen':
       'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=thuisBezorgen',
   '/mijnAanmeldingen':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=MijnAanmeldingen',
-  '/selectprovinciegemeenteCopy':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=selectprovinciegemeenteCopy',
-  '/pUitgaanPageCopy':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaanPageCopy',
-  '/homeCopy':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=homeCopy',
-  '/mijnProfielCopy':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfielCopy',
-  '/mijnProfielCopy2':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfielCopy2',
-  '/mijnProfielCopy3':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfielCopy3',
-  '/pUitgaanPageCopy2':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaanPageCopy2',
-  '/pUitgaanPageCopy3':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaanPageCopy3',
-  '/favorietenCopy':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorietenCopy',
-  '/mijnProfielCopy4':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfielCopy4'
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=MijnAanmeldingen'
 };
 
 class AppStateNotifier extends ChangeNotifier {
@@ -235,7 +215,12 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
         FFRoute(
           name: MijnProfielWidget.routeName,
           path: MijnProfielWidget.routePath,
-          builder: (context, params) => MijnProfielWidget(),
+          builder: (context, params) => MijnProfielWidget(
+            tabIndex: params.getParam(
+              'tabIndex',
+              ParamType.int,
+            ),
+          ),
         ),
         FFRoute(
           name: StadsactiviteitAanmakenWidget.routeName,
@@ -287,83 +272,6 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
               ParamType.String,
             ),
           ),
-        ),
-        FFRoute(
-          name: SelectprovinciegemeenteCopyWidget.routeName,
-          path: SelectprovinciegemeenteCopyWidget.routePath,
-          builder: (context, params) => SelectprovinciegemeenteCopyWidget(),
-        ),
-        FFRoute(
-          name: PUitgaanPageCopyWidget.routeName,
-          path: PUitgaanPageCopyWidget.routePath,
-          builder: (context, params) => PUitgaanPageCopyWidget(
-            plaats: params.getParam(
-              'plaats',
-              ParamType.String,
-            ),
-            services: params.getParam(
-              'services',
-              ParamType.String,
-            ),
-          ),
-        ),
-        FFRoute(
-          name: HomeCopyWidget.routeName,
-          path: HomeCopyWidget.routePath,
-          builder: (context, params) => HomeCopyWidget(),
-        ),
-        FFRoute(
-          name: MijnProfielCopyWidget.routeName,
-          path: MijnProfielCopyWidget.routePath,
-          builder: (context, params) => MijnProfielCopyWidget(),
-        ),
-        FFRoute(
-          name: MijnProfielCopy2Widget.routeName,
-          path: MijnProfielCopy2Widget.routePath,
-          builder: (context, params) => MijnProfielCopy2Widget(),
-        ),
-        FFRoute(
-          name: MijnProfielCopy3Widget.routeName,
-          path: MijnProfielCopy3Widget.routePath,
-          builder: (context, params) => MijnProfielCopy3Widget(),
-        ),
-        FFRoute(
-          name: PUitgaanPageCopy2Widget.routeName,
-          path: PUitgaanPageCopy2Widget.routePath,
-          builder: (context, params) => PUitgaanPageCopy2Widget(
-            plaats: params.getParam(
-              'plaats',
-              ParamType.String,
-            ),
-            services: params.getParam(
-              'services',
-              ParamType.String,
-            ),
-          ),
-        ),
-        FFRoute(
-          name: PUitgaanPageCopy3Widget.routeName,
-          path: PUitgaanPageCopy3Widget.routePath,
-          builder: (context, params) => PUitgaanPageCopy3Widget(
-            plaats: params.getParam(
-              'plaats',
-              ParamType.String,
-            ),
-            services: params.getParam(
-              'services',
-              ParamType.String,
-            ),
-          ),
-        ),
-        FFRoute(
-          name: FavorietenCopyWidget.routeName,
-          path: FavorietenCopyWidget.routePath,
-          builder: (context, params) => FavorietenCopyWidget(),
-        ),
-        FFRoute(
-          name: MijnProfielCopy4Widget.routeName,
-          path: MijnProfielCopy4Widget.routePath,
-          builder: (context, params) => MijnProfielCopy4Widget(),
         )
       ].map((r) => r.toRoute(appStateNotifier)).toList(),
       observers: ffNavigatorObservers,

+ 39 - 35
lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart

@@ -459,41 +459,45 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                           waitDuration: Duration(milliseconds: 100),
                           showDuration: Duration(milliseconds: 1500),
                           triggerMode: TooltipTriggerMode.tap,
-                          child: FlutterFlowIconButton(
-                            borderRadius: 8.0,
-                            buttonSize: 40.0,
-                            fillColor: FlutterFlowTheme.of(context).secondary,
-                            icon: Icon(
-                              Icons.event_available,
-                              color: FlutterFlowTheme.of(context).info,
-                              size: 24.0,
+                          child: Padding(
+                            padding: EdgeInsetsDirectional.fromSTEB(
+                                0.0, 0.0, 12.0, 0.0),
+                            child: FlutterFlowIconButton(
+                              borderRadius: 8.0,
+                              buttonSize: 40.0,
+                              fillColor: FlutterFlowTheme.of(context).secondary,
+                              icon: Icon(
+                                Icons.event_available,
+                                color: FlutterFlowTheme.of(context).info,
+                                size: 24.0,
+                              ),
+                              onPressed: () async {
+                                await actions.zetInAgenda(
+                                  getJsonField(
+                                    eventCurrentEvenementResponse.jsonBody,
+                                    r'''$[0].title''',
+                                  ).toString(),
+                                  getJsonField(
+                                    eventCurrentEvenementResponse.jsonBody,
+                                    r'''$[0].datum_iso''',
+                                  ).toString(),
+                                  '',
+                                  getJsonField(
+                                    eventCurrentEvenementResponse.jsonBody,
+                                    r'''$[0].adres''',
+                                  ).toString(),
+                                  getJsonField(
+                                    eventCurrentEvenementResponse.jsonBody,
+                                    r'''$[0].body''',
+                                  ).toString(),
+                                  getJsonField(
+                                    eventCurrentEvenementResponse.jsonBody,
+                                    r'''$[0].plaats''',
+                                  ).toString(),
+                                  widget!.nid,
+                                );
+                              },
                             ),
-                            onPressed: () async {
-                              await actions.zetInAgenda(
-                                getJsonField(
-                                  eventCurrentEvenementResponse.jsonBody,
-                                  r'''$[0].title''',
-                                ).toString(),
-                                getJsonField(
-                                  eventCurrentEvenementResponse.jsonBody,
-                                  r'''$[0].datum_iso''',
-                                ).toString(),
-                                '',
-                                getJsonField(
-                                  eventCurrentEvenementResponse.jsonBody,
-                                  r'''$[0].adres''',
-                                ).toString(),
-                                getJsonField(
-                                  eventCurrentEvenementResponse.jsonBody,
-                                  r'''$[0].body''',
-                                ).toString(),
-                                getJsonField(
-                                  eventCurrentEvenementResponse.jsonBody,
-                                  r'''$[0].plaats''',
-                                ).toString(),
-                                widget!.nid,
-                              );
-                            },
                           ),
                         ),
                       ],
@@ -590,7 +594,7 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                               children: [
                                 Padding(
                                   padding: EdgeInsetsDirectional.fromSTEB(
-                                      1.0, 3.0, 1.0, 2.0),
+                                      1.0, 3.0, 12.0, 2.0),
                                   child: Builder(
                                     builder: (context) {
                                       final categorie =

+ 1 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horecagelegenheden_overzicht_current_model.dart

@@ -8,6 +8,7 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/form_field_controller.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;

+ 31 - 12
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horecagelegenheden_overzicht_current_widget.dart

@@ -8,6 +8,7 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/form_field_controller.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;
@@ -673,8 +674,11 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                               .take(1000)
                                               .toList();
                                           if (horecagelegenheden.isEmpty) {
-                                            return Image.asset(
-                                              'assets/images/logo800px.png',
+                                            return LegeLijstMeldingWidget(
+                                              nlTekst:
+                                                  'Geen activiteiten gevonden. Probeer een andere categorie.',
+                                              enTekst:
+                                                  'No activities found. Try another category.',
                                             );
                                           }
                                           _model.debugGeneratorVariables[
@@ -880,8 +884,11 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                   .toList();
                                           if (horecagelegenhedenCultuur
                                               .isEmpty) {
-                                            return Image.asset(
-                                              'assets/images/logo800px.png',
+                                            return LegeLijstMeldingWidget(
+                                              nlTekst:
+                                                  'Geen culturele gelegenheden gevonden... ',
+                                              enTekst:
+                                                  'No cultural venues found...',
                                             );
                                           }
                                           _model.debugGeneratorVariables[
@@ -1091,8 +1098,11 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
-                                                  return Image.asset(
-                                                    'assets/images/logo800px.png',
+                                                  return LegeLijstMeldingWidget(
+                                                    nlTekst:
+                                                        'Geen gelegenheden gevonden...',
+                                                    enTekst:
+                                                        'No places found...',
                                                   );
                                                 }
                                                 _model.debugGeneratorVariables[
@@ -1325,8 +1335,11 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
-                                                  return Image.asset(
-                                                    'assets/images/logo800px.png',
+                                                  return LegeLijstMeldingWidget(
+                                                    nlTekst:
+                                                        'Geen gelegenheden gevonden...',
+                                                    enTekst:
+                                                        'No places found...',
                                                   );
                                                 }
                                                 _model.debugGeneratorVariables[
@@ -1560,8 +1573,11 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
-                                                  return Image.asset(
-                                                    'assets/images/logo800px.png',
+                                                  return LegeLijstMeldingWidget(
+                                                    nlTekst:
+                                                        'Geen gelegenheden gevonden...',
+                                                    enTekst:
+                                                        'No places found...',
                                                   );
                                                 }
                                                 _model.debugGeneratorVariables[
@@ -1795,8 +1811,11 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
-                                                  return Image.asset(
-                                                    'assets/images/logo800px.png',
+                                                  return LegeLijstMeldingWidget(
+                                                    nlTekst:
+                                                        'Geen gelegenheden gevonden...',
+                                                    enTekst:
+                                                        'No places found...',
                                                   );
                                                 }
                                                 _model.debugGeneratorVariables[

+ 1 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_provincie_page/horecagelegenheden_overzicht_provincie_page_model.dart

@@ -6,6 +6,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import '/backend/schema/structs/index.dart';
 import '/flutter_flow/custom_functions.dart' as functions;

+ 434 - 405
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_provincie_page/horecagelegenheden_overzicht_provincie_page_widget.dart

@@ -6,6 +6,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import '/backend/schema/structs/index.dart';
 import '/flutter_flow/custom_functions.dart' as functions;
@@ -1066,218 +1067,234 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                 return Column(
                                   mainAxisSize: MainAxisSize.max,
                                   children: [
-                                    Expanded(
-                                      child: FutureBuilder<ApiCallResponse>(
-                                        future:
-                                            HorecagelegenheidoverzichtCall.call(
-                                          horcat: '17965',
-                                          townid: widget!.plaats,
-                                        ),
-                                        builder: (context, snapshot) {
-                                          // Customize what your widget looks like when it's loading.
-                                          if (!snapshot.hasData) {
-                                            return Center(
-                                              child: SizedBox(
-                                                width: 80.0,
-                                                height: 80.0,
-                                                child: SpinKitFadingCircle(
-                                                  color: FlutterFlowTheme.of(
-                                                          context)
-                                                      .primary,
-                                                  size: 80.0,
+                                    if (responsiveVisibility(
+                                      context: context,
+                                      phone: false,
+                                    ))
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17965',
+                                            townid: widget!.plaats,
+                                          ),
+                                          builder: (context, snapshot) {
+                                            // Customize what your widget looks like when it's loading.
+                                            if (!snapshot.hasData) {
+                                              return Center(
+                                                child: SizedBox(
+                                                  width: 80.0,
+                                                  height: 80.0,
+                                                  child: SpinKitFadingCircle(
+                                                    color: FlutterFlowTheme.of(
+                                                            context)
+                                                        .primary,
+                                                    size: 80.0,
+                                                  ),
                                                 ),
-                                              ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_e6xyp1fa'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
+                                              name: 'int',
+                                              nullable: false,
                                             );
-                                          }
-                                          final staggeredViewHorecagelegenheidoverzichtResponse =
-                                              snapshot.data!;
-                                          _model.debugBackendQueries[
-                                                  'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_e6xyp1fa'] =
-                                              debugSerializeParam(
-                                            staggeredViewHorecagelegenheidoverzichtResponse
-                                                .statusCode,
-                                            ParamType.int,
-                                            link:
-                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
-                                            name: 'int',
-                                            nullable: false,
-                                          );
-                                          _model.debugBackendQueries[
-                                                  'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_e6xyp1fa'] =
-                                              debugSerializeParam(
-                                            staggeredViewHorecagelegenheidoverzichtResponse
-                                                .bodyText,
-                                            ParamType.String,
-                                            link:
-                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
-                                            name: 'String',
-                                            nullable: false,
-                                          );
-                                          debugLogWidgetClass(_model);
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_e6xyp1fa'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
 
-                                          return Builder(
-                                            builder: (context) {
-                                              final horecagelegenheden =
-                                                  functions
-                                                      .filterHorecagelegenheden(
-                                                          HorecagelegenheidoverzichtCall
-                                                              .items(
-                                                            staggeredViewHorecagelegenheidoverzichtResponse
-                                                                .jsonBody,
-                                                          )?.toList(),
-                                                          _model.textController
-                                                              .text,
-                                                          '',
-                                                          '\$.titel',
-                                                          '\$.categorie')
-                                                      .toList()
-                                                      .take(1000)
-                                                      .toList();
-                                              if (horecagelegenheden.isEmpty) {
-                                                return Center(
-                                                  child: Image.asset(
-                                                    'assets/images/logo800px.png',
-                                                  ),
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    functions
+                                                        .filterHorecagelegenheden(
+                                                            HorecagelegenheidoverzichtCall
+                                                                .items(
+                                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                                  .jsonBody,
+                                                            )?.toList(),
+                                                            _model
+                                                                .textController
+                                                                .text,
+                                                            '',
+                                                            '\$.titel',
+                                                            '\$.categorie')
+                                                        .toList()
+                                                        .take(1000)
+                                                        .toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return Center(
+                                                    child:
+                                                        LegeLijstMeldingWidget(
+                                                      nlTekst:
+                                                          'Geen overnachtingen gevonden. Probeer een andere categorie.',
+                                                      enTekst:
+                                                          'No places to stay found. Try another category.',
+                                                    ),
+                                                  );
+                                                }
+                                                _model.debugGeneratorVariables[
+                                                        'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
+                                                    debugSerializeParam(
+                                                  horecagelegenheden.take(100),
+                                                  ParamType.JSON,
+                                                  isList: true,
+                                                  link:
+                                                      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
+                                                  name: 'dynamic',
+                                                  nullable: false,
                                                 );
-                                              }
-                                              _model.debugGeneratorVariables[
-                                                      'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
-                                                  debugSerializeParam(
-                                                horecagelegenheden.take(100),
-                                                ParamType.JSON,
-                                                isList: true,
-                                                link:
-                                                    'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
-                                                name: 'dynamic',
-                                                nullable: false,
-                                              );
-                                              debugLogWidgetClass(_model);
+                                                debugLogWidgetClass(_model);
 
-                                              return MasonryGridView.builder(
-                                                gridDelegate:
-                                                    SliverSimpleGridDelegateWithFixedCrossAxisCount(
-                                                  crossAxisCount: () {
-                                                    if (MediaQuery.sizeOf(
-                                                                context)
-                                                            .width <
-                                                        kBreakpointSmall) {
-                                                      return 1;
-                                                    } else if (MediaQuery
-                                                                .sizeOf(context)
-                                                            .width <
-                                                        kBreakpointMedium) {
-                                                      return 1;
-                                                    } else if (MediaQuery
-                                                                .sizeOf(context)
-                                                            .width <
-                                                        kBreakpointLarge) {
-                                                      return 2;
-                                                    } else {
-                                                      return 3;
-                                                    }
-                                                  }(),
-                                                ),
-                                                crossAxisSpacing: 12.0,
-                                                mainAxisSpacing: 12.0,
-                                                itemCount:
-                                                    horecagelegenheden.length,
-                                                itemBuilder: (context,
-                                                    horecagelegenhedenIndex) {
-                                                  final horecagelegenhedenItem =
-                                                      horecagelegenheden[
-                                                          horecagelegenhedenIndex];
-                                                  return Container(
-                                                    width: 600.0,
-                                                    height: 225.0,
-                                                    decoration: BoxDecoration(
-                                                      color: FlutterFlowTheme
-                                                              .of(context)
-                                                          .secondaryBackground,
-                                                    ),
-                                                    child: InkWell(
-                                                      splashColor:
-                                                          Colors.transparent,
-                                                      focusColor:
-                                                          Colors.transparent,
-                                                      hoverColor:
-                                                          Colors.transparent,
-                                                      highlightColor:
-                                                          Colors.transparent,
-                                                      onTap: () async {
-                                                        context.pushNamed(
-                                                          HorecagelegenheidCurrentWidget
-                                                              .routeName,
-                                                          queryParameters: {
-                                                            'nid':
-                                                                serializeParam(
-                                                              getJsonField(
+                                                return MasonryGridView.builder(
+                                                  gridDelegate:
+                                                      SliverSimpleGridDelegateWithFixedCrossAxisCount(
+                                                    crossAxisCount: () {
+                                                      if (MediaQuery.sizeOf(
+                                                                  context)
+                                                              .width <
+                                                          kBreakpointSmall) {
+                                                        return 1;
+                                                      } else if (MediaQuery
+                                                                  .sizeOf(
+                                                                      context)
+                                                              .width <
+                                                          kBreakpointMedium) {
+                                                        return 1;
+                                                      } else if (MediaQuery
+                                                                  .sizeOf(
+                                                                      context)
+                                                              .width <
+                                                          kBreakpointLarge) {
+                                                        return 2;
+                                                      } else {
+                                                        return 3;
+                                                      }
+                                                    }(),
+                                                  ),
+                                                  crossAxisSpacing: 12.0,
+                                                  mainAxisSpacing: 12.0,
+                                                  itemCount:
+                                                      horecagelegenheden.length,
+                                                  itemBuilder: (context,
+                                                      horecagelegenhedenIndex) {
+                                                    final horecagelegenhedenItem =
+                                                        horecagelegenheden[
+                                                            horecagelegenhedenIndex];
+                                                    return Container(
+                                                      width: 600.0,
+                                                      height: 225.0,
+                                                      decoration: BoxDecoration(
+                                                        color: FlutterFlowTheme
+                                                                .of(context)
+                                                            .secondaryBackground,
+                                                      ),
+                                                      child: InkWell(
+                                                        splashColor:
+                                                            Colors.transparent,
+                                                        focusColor:
+                                                            Colors.transparent,
+                                                        hoverColor:
+                                                            Colors.transparent,
+                                                        highlightColor:
+                                                            Colors.transparent,
+                                                        onTap: () async {
+                                                          context.pushNamed(
+                                                            HorecagelegenheidCurrentWidget
+                                                                .routeName,
+                                                            queryParameters: {
+                                                              'nid':
+                                                                  serializeParam(
+                                                                getJsonField(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels4[
+                                                                  'Keyqrr_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyqrr_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'),
+                                                              titel:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.titel''',
+                                                              ).toString(),
+                                                              logo:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.logo''',
+                                                              ).toString(),
+                                                              nid: getJsonField(
                                                                 horecagelegenhedenItem,
                                                                 r'''$.nid''',
                                                               ).toString(),
-                                                              ParamType.String,
+                                                              adres:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.adres''',
+                                                              ).toString(),
+                                                              plaats:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.plaats''',
+                                                              ).toString(),
+                                                              categorie:
+                                                                  (getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.categorie''',
+                                                                true,
+                                                              ) as List?)
+                                                                      ?.map<String>(
+                                                                          (e) => e
+                                                                              .toString())
+                                                                      .toList()
+                                                                      .cast<
+                                                                          String>(),
                                                             ),
-                                                          }.withoutNulls,
-                                                        );
-                                                      },
-                                                      child:
-                                                          Builder(builder: (_) {
-                                                        return DebugFlutterFlowModelContext(
-                                                          rootModel:
-                                                              _model.rootModel,
-                                                          parentModelCallback:
-                                                              (m) {
-                                                            _model.horecagelegenheidoverzichtKaartModels4[
-                                                                'Keyqrr_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
-                                                          },
-                                                          child:
-                                                              HorecagelegenheidoverzichtKaartWidget(
-                                                            key: Key(
-                                                                'Keyqrr_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'),
-                                                            titel: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.titel''',
-                                                            ).toString(),
-                                                            logo: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.logo''',
-                                                            ).toString(),
-                                                            nid: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.nid''',
-                                                            ).toString(),
-                                                            adres: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.adres''',
-                                                            ).toString(),
-                                                            plaats:
-                                                                getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.plaats''',
-                                                            ).toString(),
-                                                            categorie:
-                                                                (getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.categorie''',
-                                                              true,
-                                                            ) as List?)
-                                                                    ?.map<String>(
-                                                                        (e) => e
-                                                                            .toString())
-                                                                    .toList()
-                                                                    .cast<
-                                                                        String>(),
-                                                          ),
-                                                        );
-                                                      }),
-                                                    ),
-                                                  );
-                                                },
-                                              );
-                                            },
-                                          );
-                                        },
+                                                          );
+                                                        }),
+                                                      ),
+                                                    );
+                                                  },
+                                                );
+                                              },
+                                            );
+                                          },
+                                        ),
                                       ),
-                                    ),
                                   ],
                                 );
                               } else {
@@ -1298,219 +1315,231 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                 return Column(
                                   mainAxisSize: MainAxisSize.max,
                                   children: [
-                                    Expanded(
-                                      child: FutureBuilder<ApiCallResponse>(
-                                        future:
-                                            HorecagelegenheidoverzichtCall.call(
-                                          horcat: '17967',
-                                          townid:
-                                              FFAppState().provincieSelectId,
-                                        ),
-                                        builder: (context, snapshot) {
-                                          // Customize what your widget looks like when it's loading.
-                                          if (!snapshot.hasData) {
-                                            return Center(
-                                              child: SizedBox(
-                                                width: 80.0,
-                                                height: 80.0,
-                                                child: SpinKitFadingCircle(
-                                                  color: FlutterFlowTheme.of(
-                                                          context)
-                                                      .primary,
-                                                  size: 80.0,
+                                    if (responsiveVisibility(
+                                      context: context,
+                                      phone: false,
+                                    ))
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17967',
+                                            townid:
+                                                FFAppState().provincieSelectId,
+                                          ),
+                                          builder: (context, snapshot) {
+                                            // Customize what your widget looks like when it's loading.
+                                            if (!snapshot.hasData) {
+                                              return Center(
+                                                child: SizedBox(
+                                                  width: 80.0,
+                                                  height: 80.0,
+                                                  child: SpinKitFadingCircle(
+                                                    color: FlutterFlowTheme.of(
+                                                            context)
+                                                        .primary,
+                                                    size: 80.0,
+                                                  ),
                                                 ),
-                                              ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_0fj83eto'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
+                                              name: 'int',
+                                              nullable: false,
                                             );
-                                          }
-                                          final staggeredViewHorecagelegenheidoverzichtResponse =
-                                              snapshot.data!;
-                                          _model.debugBackendQueries[
-                                                  'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_0fj83eto'] =
-                                              debugSerializeParam(
-                                            staggeredViewHorecagelegenheidoverzichtResponse
-                                                .statusCode,
-                                            ParamType.int,
-                                            link:
-                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
-                                            name: 'int',
-                                            nullable: false,
-                                          );
-                                          _model.debugBackendQueries[
-                                                  'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_0fj83eto'] =
-                                              debugSerializeParam(
-                                            staggeredViewHorecagelegenheidoverzichtResponse
-                                                .bodyText,
-                                            ParamType.String,
-                                            link:
-                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
-                                            name: 'String',
-                                            nullable: false,
-                                          );
-                                          debugLogWidgetClass(_model);
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_0fj83eto'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
 
-                                          return Builder(
-                                            builder: (context) {
-                                              final horecagelegenheden =
-                                                  functions
-                                                      .filterHorecagelegenheden(
-                                                          HorecagelegenheidoverzichtCall
-                                                              .items(
-                                                            staggeredViewHorecagelegenheidoverzichtResponse
-                                                                .jsonBody,
-                                                          )?.toList(),
-                                                          _model.textController
-                                                              .text,
-                                                          '',
-                                                          '\$.titel',
-                                                          '\$.categorie')
-                                                      .toList()
-                                                      .take(1000)
-                                                      .toList();
-                                              if (horecagelegenheden.isEmpty) {
-                                                return Center(
-                                                  child: Image.asset(
-                                                    'assets/images/logo800px.png',
-                                                  ),
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    functions
+                                                        .filterHorecagelegenheden(
+                                                            HorecagelegenheidoverzichtCall
+                                                                .items(
+                                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                                  .jsonBody,
+                                                            )?.toList(),
+                                                            _model
+                                                                .textController
+                                                                .text,
+                                                            '',
+                                                            '\$.titel',
+                                                            '\$.categorie')
+                                                        .toList()
+                                                        .take(1000)
+                                                        .toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return Center(
+                                                    child: Image.asset(
+                                                      'assets/images/logo800px.png',
+                                                    ),
+                                                  );
+                                                }
+                                                _model.debugGeneratorVariables[
+                                                        'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
+                                                    debugSerializeParam(
+                                                  horecagelegenheden.take(100),
+                                                  ParamType.JSON,
+                                                  isList: true,
+                                                  link:
+                                                      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
+                                                  name: 'dynamic',
+                                                  nullable: false,
                                                 );
-                                              }
-                                              _model.debugGeneratorVariables[
-                                                      'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
-                                                  debugSerializeParam(
-                                                horecagelegenheden.take(100),
-                                                ParamType.JSON,
-                                                isList: true,
-                                                link:
-                                                    'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtProvinciePage',
-                                                name: 'dynamic',
-                                                nullable: false,
-                                              );
-                                              debugLogWidgetClass(_model);
+                                                debugLogWidgetClass(_model);
 
-                                              return MasonryGridView.builder(
-                                                gridDelegate:
-                                                    SliverSimpleGridDelegateWithFixedCrossAxisCount(
-                                                  crossAxisCount: () {
-                                                    if (MediaQuery.sizeOf(
-                                                                context)
-                                                            .width <
-                                                        kBreakpointSmall) {
-                                                      return 1;
-                                                    } else if (MediaQuery
-                                                                .sizeOf(context)
-                                                            .width <
-                                                        kBreakpointMedium) {
-                                                      return 1;
-                                                    } else if (MediaQuery
-                                                                .sizeOf(context)
-                                                            .width <
-                                                        kBreakpointLarge) {
-                                                      return 2;
-                                                    } else {
-                                                      return 3;
-                                                    }
-                                                  }(),
-                                                ),
-                                                crossAxisSpacing: 12.0,
-                                                mainAxisSpacing: 12.0,
-                                                itemCount:
-                                                    horecagelegenheden.length,
-                                                itemBuilder: (context,
-                                                    horecagelegenhedenIndex) {
-                                                  final horecagelegenhedenItem =
-                                                      horecagelegenheden[
-                                                          horecagelegenhedenIndex];
-                                                  return Container(
-                                                    width: 600.0,
-                                                    height: 225.0,
-                                                    decoration: BoxDecoration(
-                                                      color: FlutterFlowTheme
-                                                              .of(context)
-                                                          .secondaryBackground,
-                                                    ),
-                                                    child: InkWell(
-                                                      splashColor:
-                                                          Colors.transparent,
-                                                      focusColor:
-                                                          Colors.transparent,
-                                                      hoverColor:
-                                                          Colors.transparent,
-                                                      highlightColor:
-                                                          Colors.transparent,
-                                                      onTap: () async {
-                                                        context.pushNamed(
-                                                          HorecagelegenheidCurrentWidget
-                                                              .routeName,
-                                                          queryParameters: {
-                                                            'nid':
-                                                                serializeParam(
-                                                              getJsonField(
+                                                return MasonryGridView.builder(
+                                                  gridDelegate:
+                                                      SliverSimpleGridDelegateWithFixedCrossAxisCount(
+                                                    crossAxisCount: () {
+                                                      if (MediaQuery.sizeOf(
+                                                                  context)
+                                                              .width <
+                                                          kBreakpointSmall) {
+                                                        return 1;
+                                                      } else if (MediaQuery
+                                                                  .sizeOf(
+                                                                      context)
+                                                              .width <
+                                                          kBreakpointMedium) {
+                                                        return 1;
+                                                      } else if (MediaQuery
+                                                                  .sizeOf(
+                                                                      context)
+                                                              .width <
+                                                          kBreakpointLarge) {
+                                                        return 2;
+                                                      } else {
+                                                        return 3;
+                                                      }
+                                                    }(),
+                                                  ),
+                                                  crossAxisSpacing: 12.0,
+                                                  mainAxisSpacing: 12.0,
+                                                  itemCount:
+                                                      horecagelegenheden.length,
+                                                  itemBuilder: (context,
+                                                      horecagelegenhedenIndex) {
+                                                    final horecagelegenhedenItem =
+                                                        horecagelegenheden[
+                                                            horecagelegenhedenIndex];
+                                                    return Container(
+                                                      width: 600.0,
+                                                      height: 225.0,
+                                                      decoration: BoxDecoration(
+                                                        color: FlutterFlowTheme
+                                                                .of(context)
+                                                            .secondaryBackground,
+                                                      ),
+                                                      child: InkWell(
+                                                        splashColor:
+                                                            Colors.transparent,
+                                                        focusColor:
+                                                            Colors.transparent,
+                                                        hoverColor:
+                                                            Colors.transparent,
+                                                        highlightColor:
+                                                            Colors.transparent,
+                                                        onTap: () async {
+                                                          context.pushNamed(
+                                                            HorecagelegenheidCurrentWidget
+                                                                .routeName,
+                                                            queryParameters: {
+                                                              'nid':
+                                                                  serializeParam(
+                                                                getJsonField(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels5[
+                                                                  'Keypti_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keypti_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'),
+                                                              titel:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.titel''',
+                                                              ).toString(),
+                                                              logo:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.logo''',
+                                                              ).toString(),
+                                                              nid: getJsonField(
                                                                 horecagelegenhedenItem,
                                                                 r'''$.nid''',
                                                               ).toString(),
-                                                              ParamType.String,
+                                                              adres:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.adres''',
+                                                              ).toString(),
+                                                              plaats:
+                                                                  getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.plaats''',
+                                                              ).toString(),
+                                                              categorie:
+                                                                  (getJsonField(
+                                                                horecagelegenhedenItem,
+                                                                r'''$.categorie''',
+                                                                true,
+                                                              ) as List?)
+                                                                      ?.map<String>(
+                                                                          (e) => e
+                                                                              .toString())
+                                                                      .toList()
+                                                                      .cast<
+                                                                          String>(),
                                                             ),
-                                                          }.withoutNulls,
-                                                        );
-                                                      },
-                                                      child:
-                                                          Builder(builder: (_) {
-                                                        return DebugFlutterFlowModelContext(
-                                                          rootModel:
-                                                              _model.rootModel,
-                                                          parentModelCallback:
-                                                              (m) {
-                                                            _model.horecagelegenheidoverzichtKaartModels5[
-                                                                'Keypti_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
-                                                          },
-                                                          child:
-                                                              HorecagelegenheidoverzichtKaartWidget(
-                                                            key: Key(
-                                                                'Keypti_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'),
-                                                            titel: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.titel''',
-                                                            ).toString(),
-                                                            logo: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.logo''',
-                                                            ).toString(),
-                                                            nid: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.nid''',
-                                                            ).toString(),
-                                                            adres: getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.adres''',
-                                                            ).toString(),
-                                                            plaats:
-                                                                getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.plaats''',
-                                                            ).toString(),
-                                                            categorie:
-                                                                (getJsonField(
-                                                              horecagelegenhedenItem,
-                                                              r'''$.categorie''',
-                                                              true,
-                                                            ) as List?)
-                                                                    ?.map<String>(
-                                                                        (e) => e
-                                                                            .toString())
-                                                                    .toList()
-                                                                    .cast<
-                                                                        String>(),
-                                                          ),
-                                                        );
-                                                      }),
-                                                    ),
-                                                  );
-                                                },
-                                              );
-                                            },
-                                          );
-                                        },
+                                                          );
+                                                        }),
+                                                      ),
+                                                    );
+                                                  },
+                                                );
+                                              },
+                                            );
+                                          },
+                                        ),
                                       ),
-                                    ),
                                   ],
                                 );
                               } else {

Fichier diff supprimé car celui-ci est trop grand
+ 592 - 434
lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_widget.dart


+ 0 - 18
lib/index.dart

@@ -25,21 +25,3 @@ export '/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horeca
 export '/thuis_bezorgen/thuis_bezorgen_widget.dart' show ThuisBezorgenWidget;
 export '/mijn_aanmeldingen/mijn_aanmeldingen_widget.dart'
     show MijnAanmeldingenWidget;
-export '/selecteer_plaats/selectprovinciegemeente_copy/selectprovinciegemeente_copy_widget.dart'
-    show SelectprovinciegemeenteCopyWidget;
-export '/uitgaanspaginas/p_uitgaan_page_copy/p_uitgaan_page_copy_widget.dart'
-    show PUitgaanPageCopyWidget;
-export '/uitgaanspaginas/home_copy/home_copy_widget.dart' show HomeCopyWidget;
-export '/mijn_profiel_copy/mijn_profiel_copy_widget.dart'
-    show MijnProfielCopyWidget;
-export '/mijn_profiel_copy2/mijn_profiel_copy2_widget.dart'
-    show MijnProfielCopy2Widget;
-export '/mijn_profiel_copy3/mijn_profiel_copy3_widget.dart'
-    show MijnProfielCopy3Widget;
-export '/uitgaanspaginas/p_uitgaan_page_copy2/p_uitgaan_page_copy2_widget.dart'
-    show PUitgaanPageCopy2Widget;
-export '/uitgaanspaginas/p_uitgaan_page_copy3/p_uitgaan_page_copy3_widget.dart'
-    show PUitgaanPageCopy3Widget;
-export '/favorieten_copy/favorieten_copy_widget.dart' show FavorietenCopyWidget;
-export '/mijn_profiel_copy4/mijn_profiel_copy4_widget.dart'
-    show MijnProfielCopy4Widget;

+ 3 - 1
lib/main.dart

@@ -32,6 +32,7 @@ void main() async {
   adMobRequestConsent();
 
   await authManager.initialize();
+  await FFLocalizations.initialize();
 
   final appState = FFAppState(); // Initialize FFAppState
   await appState.initializePersistedState();
@@ -128,7 +129,7 @@ class MyApp extends StatefulWidget {
 }
 
 class _MyAppState extends State<MyApp> {
-  Locale? _locale;
+  Locale? _locale = FFLocalizations.getStoredLocale();
   Locale? get locale => _locale;
   ThemeMode _themeMode = ThemeMode.system;
 
@@ -180,6 +181,7 @@ class _MyAppState extends State<MyApp> {
 
   void setLocale(String language) {
     safeSetState(() => _locale = createLocale(language));
+    FFLocalizations.storeLocale(language);
   }
 
   void setThemeMode(ThemeMode mode) => safeSetState(() {

+ 2 - 0
lib/mijn_aanmeldingen/mijn_aanmeldingen_model.dart

@@ -4,10 +4,12 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import 'mijn_aanmeldingen_widget.dart' show MijnAanmeldingenWidget;
+import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
 import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';

+ 160 - 84
lib/mijn_aanmeldingen/mijn_aanmeldingen_widget.dart

@@ -4,9 +4,11 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
+import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
 import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
@@ -207,8 +209,11 @@ class _MijnAanmeldingenWidgetState extends State<MijnAanmeldingenWidget>
                       ),
                     ),
                     noItemsFoundIndicatorBuilder: (_) => Center(
-                      child: Image.asset(
-                        'assets/images/uitgaanskrant.com-applogo.jpg',
+                      child: LegeLijstMeldingWidget(
+                        nlTekst:
+                            'Je hebt nog geen komende evenementen of activiteiten aangemaakt.',
+                        enTekst:
+                            'You haven\'t created any upcoming events or activities yet.',
                       ),
                     ),
                     itemBuilder: (context, _, aanmeldingItemIndex) {
@@ -388,93 +393,164 @@ class _MijnAanmeldingenWidgetState extends State<MijnAanmeldingenWidget>
                                   ),
                                 ),
                               ),
-                              FFButtonWidget(
-                                onPressed: () async {
-                                  _model.apiResulttzz =
-                                      await AanmeldingKloonbronCall.call(
-                                    sessionName: FFAppState().userSessionname,
-                                    sessid: FFAppState().userSessionid,
-                                    nid: getJsonField(
-                                      aanmeldingItemItem,
-                                      r'''$.nid''',
-                                    ).toString(),
-                                  );
-
-                                  if ((_model.apiResulttzz?.succeeded ??
-                                      true)) {
-                                    FFAppState().kloonBron =
-                                        (_model.apiResulttzz?.jsonBody ?? '');
-                                    safeSetState(() {});
-                                    if (widget!.type == 'go_out_event') {
-                                      context.pushNamed(
-                                        UitgaansevenementAanmakenWidget
-                                            .routeName,
-                                        queryParameters: {
-                                          'horecagelegenheidNid':
-                                              serializeParam(
-                                            getJsonField(
-                                              aanmeldingItemItem,
-                                              r'''$.horecagelegenheidnid''',
-                                            ).toString(),
-                                            ParamType.String,
+                              Align(
+                                alignment: AlignmentDirectional(1.0, 0.0),
+                                child: AlignedTooltip(
+                                  content: Padding(
+                                    padding: EdgeInsets.all(4.0),
+                                    child: Text(
+                                      FFLocalizations.of(context).getText(
+                                        'q8einmt3' /* Kopieer naar een nieuw eveneme... */,
+                                      ),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyLarge
+                                          .override(
+                                            font: GoogleFonts.roboto(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyLarge
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyLarge
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyLarge
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyLarge
+                                                    .fontStyle,
                                           ),
-                                        }.withoutNulls,
-                                      );
-                                    } else {
-                                      context.pushNamed(
-                                        StadsactiviteitAanmakenWidget.routeName,
-                                        queryParameters: {
-                                          'gemeenteTid': serializeParam(
-                                            getJsonField(
+                                    ),
+                                  ),
+                                  offset: 4.0,
+                                  preferredDirection: AxisDirection.down,
+                                  borderRadius: BorderRadius.circular(8.0),
+                                  backgroundColor: FlutterFlowTheme.of(context)
+                                      .secondaryBackground,
+                                  elevation: 4.0,
+                                  tailBaseWidth: 24.0,
+                                  tailLength: 12.0,
+                                  waitDuration: Duration(milliseconds: 100),
+                                  showDuration: Duration(milliseconds: 1500),
+                                  triggerMode: TooltipTriggerMode.longPress,
+                                  child: Padding(
+                                    padding: EdgeInsetsDirectional.fromSTEB(
+                                        0.0, 0.0, 12.0, 0.0),
+                                    child: FFButtonWidget(
+                                      onPressed: () async {
+                                        _model.apiResulttzz =
+                                            await AanmeldingKloonbronCall.call(
+                                          sessionName:
+                                              FFAppState().userSessionname,
+                                          sessid: FFAppState().userSessionid,
+                                          nid: getJsonField(
+                                            aanmeldingItemItem,
+                                            r'''$.nid''',
+                                          ).toString(),
+                                        );
+
+                                        if ((_model.apiResulttzz?.succeeded ??
+                                            true)) {
+                                          FFAppState().kloonBron =
                                               (_model.apiResulttzz?.jsonBody ??
-                                                  ''),
-                                              r'''$.gemeente_tid''',
-                                            ).toString(),
-                                            ParamType.String,
-                                          ),
-                                        }.withoutNulls,
-                                      );
-                                    }
-                                  }
+                                                  '');
+                                          safeSetState(() {});
+                                          if (widget!.type == 'go_out_event') {
+                                            context.pushNamed(
+                                              UitgaansevenementAanmakenWidget
+                                                  .routeName,
+                                              queryParameters: {
+                                                'horecagelegenheidNid':
+                                                    serializeParam(
+                                                  getJsonField(
+                                                    aanmeldingItemItem,
+                                                    r'''$.horecagelegenheidnid''',
+                                                  ).toString(),
+                                                  ParamType.String,
+                                                ),
+                                              }.withoutNulls,
+                                            );
+                                          } else {
+                                            context.pushNamed(
+                                              StadsactiviteitAanmakenWidget
+                                                  .routeName,
+                                              queryParameters: {
+                                                'gemeenteTid': serializeParam(
+                                                  getJsonField(
+                                                    (_model.apiResulttzz
+                                                            ?.jsonBody ??
+                                                        ''),
+                                                    r'''$.gemeente_tid''',
+                                                  ).toString(),
+                                                  ParamType.String,
+                                                ),
+                                              }.withoutNulls,
+                                            );
+                                          }
+                                        }
 
-                                  safeSetState(() {});
-                                },
-                                text: FFLocalizations.of(context).getText(
-                                  'g4pbs1et' /* Kopie */,
-                                ),
-                                options: FFButtonOptions(
-                                  height: 40.0,
-                                  padding: EdgeInsetsDirectional.fromSTEB(
-                                      16.0, 0.0, 16.0, 0.0),
-                                  iconPadding: EdgeInsetsDirectional.fromSTEB(
-                                      0.0, 0.0, 0.0, 0.0),
-                                  color: FlutterFlowTheme.of(context)
-                                      .secondaryBackground,
-                                  textStyle: FlutterFlowTheme.of(context)
-                                      .titleSmall
-                                      .override(
-                                        font: GoogleFonts.roboto(
-                                          fontWeight:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontWeight,
-                                          fontStyle:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontStyle,
-                                        ),
+                                        safeSetState(() {});
+                                      },
+                                      text: FFLocalizations.of(context).getText(
+                                        'g4pbs1et' /* Kopie */,
+                                      ),
+                                      icon: Icon(
+                                        Icons.content_copy,
+                                        size: 14.0,
+                                      ),
+                                      options: FFButtonOptions(
+                                        height: 28.0,
+                                        padding: EdgeInsetsDirectional.fromSTEB(
+                                            10.0, 0.0, 10.0, 0.0),
+                                        iconPadding:
+                                            EdgeInsetsDirectional.fromSTEB(
+                                                0.0, 0.0, 4.0, 0.0),
+                                        iconColor: FlutterFlowTheme.of(context)
+                                            .secondary,
                                         color: FlutterFlowTheme.of(context)
-                                            .primaryText,
-                                        letterSpacing: 0.0,
-                                        fontWeight: FlutterFlowTheme.of(context)
-                                            .titleSmall
-                                            .fontWeight,
-                                        fontStyle: FlutterFlowTheme.of(context)
-                                            .titleSmall
-                                            .fontStyle,
+                                            .secondaryBackground,
+                                        textStyle: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .override(
+                                              font: GoogleFonts.roboto(
+                                                fontWeight:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodySmall
+                                                        .fontWeight,
+                                                fontStyle:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodySmall
+                                                        .fontStyle,
+                                              ),
+                                              color:
+                                                  FlutterFlowTheme.of(context)
+                                                      .secondary,
+                                              letterSpacing: 0.0,
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodySmall
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodySmall
+                                                      .fontStyle,
+                                            ),
+                                        elevation: 0.0,
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .secondary,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(14.0),
                                       ),
-                                  elevation: 0.0,
-                                  borderRadius: BorderRadius.circular(8.0),
+                                    ),
+                                  ),
                                 ),
                               ),
                             ],

+ 67 - 2
lib/mijn_profiel/mijn_profiel_model.dart

@@ -1,6 +1,7 @@
 import '/backend/api_requests/api_calls.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_icon_button.dart';
+import '/flutter_flow/flutter_flow_language_selector.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
@@ -12,6 +13,7 @@ import '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import 'mijn_profiel_widget.dart' show MijnProfielWidget;
+import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/scheduler.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -72,6 +74,15 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
 
   ApiCallResponse? get apiResultvpn => _apiResultvpn;
 
+  // Stores action output result for [Backend Call - API (FavorietenGemeenten)] action in mijnProfiel widget.
+  ApiCallResponse? _apiResultFavGem;
+  set apiResultFavGem(ApiCallResponse? value) {
+    _apiResultFavGem = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiResultFavGem => _apiResultFavGem;
+
   // State field(s) for TabBarmijnevenementen widget.
   TabController? tabBarmijnevenementenController;
   int get tabBarmijnevenementenCurrentIndex =>
@@ -83,7 +94,7 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
           ? tabBarmijnevenementenController!.previousIndex
           : 0;
 
-  // Stores action output result for [Backend Call - API (AanmeldingKloonbron)] action in Button widget.
+  // Stores action output result for [Backend Call - API (AanmeldingKloonbron)] action in IconButton widget.
   ApiCallResponse? _apiResultmls;
   set apiResultmls(ApiCallResponse? value) {
     _apiResultmls = value;
@@ -94,7 +105,7 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
 
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels = {};
-  // Stores action output result for [Backend Call - API (AanmeldingKloonbron)] action in Button widget.
+  // Stores action output result for [Backend Call - API (AanmeldingKloonbron)] action in IconButton widget.
   ApiCallResponse? _apiResultAct;
   set apiResultAct(ApiCallResponse? value) {
     _apiResultAct = value;
@@ -103,6 +114,24 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
 
   ApiCallResponse? get apiResultAct => _apiResultAct;
 
+  // Stores action output result for [Custom Action - drupalRequest] action in IconButton widget.
+  dynamic? _abonneerResultaat;
+  set abonneerResultaat(dynamic? value) {
+    _abonneerResultaat = value;
+    debugLogWidgetClass(this);
+  }
+
+  dynamic? get abonneerResultaat => _abonneerResultaat;
+
+  // Stores action output result for [Custom Action - drupalRequest] action in IconButton widget.
+  dynamic? _afmeldResultaat;
+  set afmeldResultaat(dynamic? value) {
+    _afmeldResultaat = value;
+    debugLogWidgetClass(this);
+  }
+
+  dynamic? get afmeldResultaat => _afmeldResultaat;
+
   // Model for HeaderButtonsComponent component.
   late HeaderButtonsComponentModel headerButtonsComponentModel;
   // Model for drawerComponent component.
@@ -129,6 +158,18 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
 
   @override
   WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'tabIndex': debugSerializeParam(
+            widget?.tabIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+            searchReference:
+                'reference=Sh8KEgoIdGFiSW5kZXgSBnNoaTR5ayoDEgEwcgQIASAAUAFaCHRhYkluZGV4',
+            name: 'int',
+            nullable: false,
+          )
+        }.withoutNulls.entries,
         localStates: {
           'mijnHorecaRespons': debugSerializeParam(
             mijnHorecaRespons,
@@ -180,6 +221,14 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
             name: 'ApiCallResponse',
             nullable: true,
           ),
+          'apiResultFavGem': debugSerializeParam(
+            apiResultFavGem,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+            name: 'ApiCallResponse',
+            nullable: true,
+          ),
           'apiResultmls': debugSerializeParam(
             apiResultmls,
             ParamType.ApiResponse,
@@ -195,6 +244,22 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
                 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
             name: 'ApiCallResponse',
             nullable: true,
+          ),
+          'abonneerResultaat': debugSerializeParam(
+            abonneerResultaat,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'afmeldResultaat': debugSerializeParam(
+            afmeldResultaat,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+            name: 'dynamic',
+            nullable: true,
           )
         }.entries,
         generatorVariables: debugGeneratorVariables.entries,

Fichier diff supprimé car celui-ci est trop grand
+ 591 - 510
lib/mijn_profiel/mijn_profiel_widget.dart


+ 261 - 167
lib/selecteer_plaats/select_state_drop_down_component_copy/select_state_drop_down_component_copy_widget.dart

@@ -89,14 +89,6 @@ class _SelectStateDropDownComponentCopyWidgetState
           provincieid: FFAppState().provincieSelectId,
         );
 
-        await actions.drupalRequest(
-          'GET',
-          '',
-          '',
-          '',
-          '',
-          '',
-        );
         FFAppState().gemeentelijst =
             ((_model.apiGemeenteResultInitalize?.jsonBody ?? '')
                     .toList()
@@ -121,6 +113,11 @@ class _SelectStateDropDownComponentCopyWidgetState
       _model.favorieteGemeentenLijst =
           _model.responseFavorieteGemeentenC!.toList().cast<dynamic>();
       safeSetState(() {});
+      FFAppState().favorieteGemeenteIds = functions
+          .favorieteGemeenteNids(_model.favorieteGemeentenLijst.toList())!
+          .toList()
+          .cast<String>();
+      safeSetState(() {});
     });
   }
 
@@ -263,7 +260,7 @@ class _SelectStateDropDownComponentCopyWidgetState
                         FlutterFlowTheme.of(context).bodyMedium.fontStyle,
                   ),
               hintText: FFLocalizations.of(context).getText(
-                '77lpcqsw' /* Selecteer... */,
+                'txkditf4' /* Selecteer... */,
               ),
               icon: Icon(
                 Icons.keyboard_arrow_down_rounded,
@@ -317,7 +314,7 @@ class _SelectStateDropDownComponentCopyWidgetState
                         FlutterFlowTheme.of(context).bodyMedium.fontStyle,
                   ),
               hintText: FFLocalizations.of(context).getText(
-                '4gdiph5w' /* Selecteer... */,
+                'vlzm5jyx' /* Selecteer... */,
               ),
               icon: Icon(
                 Icons.keyboard_arrow_down_rounded,
@@ -345,58 +342,6 @@ class _SelectStateDropDownComponentCopyWidgetState
                   Row(
                     mainAxisSize: MainAxisSize.max,
                     children: [
-                      if (!FFAppState()
-                          .favorieteGemeenteIds
-                          .contains(FFAppState().gemeenteSelectId))
-                        Text(
-                          FFLocalizations.of(context).getText(
-                            '0wx6f4vm' /* Gemeente volgen */,
-                          ),
-                          style:
-                              FlutterFlowTheme.of(context).bodyMedium.override(
-                                    font: GoogleFonts.roboto(
-                                      fontWeight: FlutterFlowTheme.of(context)
-                                          .bodyMedium
-                                          .fontWeight,
-                                      fontStyle: FlutterFlowTheme.of(context)
-                                          .bodyMedium
-                                          .fontStyle,
-                                    ),
-                                    letterSpacing: 0.0,
-                                    fontWeight: FlutterFlowTheme.of(context)
-                                        .bodyMedium
-                                        .fontWeight,
-                                    fontStyle: FlutterFlowTheme.of(context)
-                                        .bodyMedium
-                                        .fontStyle,
-                                  ),
-                        ),
-                      if (FFAppState()
-                          .favorieteGemeenteIds
-                          .contains(FFAppState().gemeenteSelectId))
-                        Text(
-                          FFLocalizations.of(context).getText(
-                            '611m1d6v' /* Je volgt deze gemeente */,
-                          ),
-                          style:
-                              FlutterFlowTheme.of(context).bodyMedium.override(
-                                    font: GoogleFonts.roboto(
-                                      fontWeight: FlutterFlowTheme.of(context)
-                                          .bodyMedium
-                                          .fontWeight,
-                                      fontStyle: FlutterFlowTheme.of(context)
-                                          .bodyMedium
-                                          .fontStyle,
-                                    ),
-                                    letterSpacing: 0.0,
-                                    fontWeight: FlutterFlowTheme.of(context)
-                                        .bodyMedium
-                                        .fontWeight,
-                                    fontStyle: FlutterFlowTheme.of(context)
-                                        .bodyMedium
-                                        .fontStyle,
-                                  ),
-                        ),
                       Builder(
                         builder: (context) {
                           if (FFAppState()
@@ -453,27 +398,60 @@ class _SelectStateDropDownComponentCopyWidgetState
                           }
                         },
                       ),
+                      if (!FFAppState()
+                          .favorieteGemeenteIds
+                          .contains(FFAppState().gemeenteSelectId))
+                        Text(
+                          FFLocalizations.of(context).getText(
+                            '2f323qec' /* Maak favoriet */,
+                          ),
+                          style:
+                              FlutterFlowTheme.of(context).bodyMedium.override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontStyle,
+                                  ),
+                        ),
+                      if (FFAppState()
+                          .favorieteGemeenteIds
+                          .contains(FFAppState().gemeenteSelectId))
+                        Text(
+                          FFLocalizations.of(context).getText(
+                            's7o5u4b3' /* Favoriet */,
+                          ),
+                          style:
+                              FlutterFlowTheme.of(context).bodyMedium.override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontStyle,
+                                  ),
+                        ),
                     ],
                   ),
-                Text(
-                  FFLocalizations.of(context).getText(
-                    'k4emzqst' /* Bij favoriete gemeenten krijg ... */,
-                  ),
-                  style: FlutterFlowTheme.of(context).bodyMedium.override(
-                        font: GoogleFonts.roboto(
-                          fontWeight: FlutterFlowTheme.of(context)
-                              .bodyMedium
-                              .fontWeight,
-                          fontStyle:
-                              FlutterFlowTheme.of(context).bodyMedium.fontStyle,
-                        ),
-                        letterSpacing: 0.0,
-                        fontWeight:
-                            FlutterFlowTheme.of(context).bodyMedium.fontWeight,
-                        fontStyle:
-                            FlutterFlowTheme.of(context).bodyMedium.fontStyle,
-                      ),
-                ),
               ],
             ),
           FFButtonWidget(
@@ -481,7 +459,7 @@ class _SelectStateDropDownComponentCopyWidgetState
               context.safePop();
             },
             text: FFLocalizations.of(context).getText(
-              'kf61i0j1' /* Toepassen */,
+              'wx831c9t' /* Toepassen */,
             ),
             options: FFButtonOptions(
               width: double.infinity,
@@ -507,94 +485,210 @@ class _SelectStateDropDownComponentCopyWidgetState
               borderRadius: BorderRadius.circular(8.0),
             ),
           ),
-          Builder(
-            builder: (context) {
-              final favorieteGemeenteItem =
-                  _model.favorieteGemeentenLijst.map((e) => e).toList();
-              _model.debugGeneratorVariables[
-                      'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] =
-                  debugSerializeParam(
-                favorieteGemeenteItem.take(100),
-                ParamType.JSON,
-                isList: true,
-                link:
-                    'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
-                name: 'dynamic',
-                nullable: false,
-              );
-              debugLogWidgetClass(_model);
+          if (_model.favorieteGemeentenLijst.isNotEmpty)
+            Column(
+              mainAxisSize: MainAxisSize.max,
+              crossAxisAlignment: CrossAxisAlignment.stretch,
+              children: [
+                Padding(
+                  padding: EdgeInsetsDirectional.fromSTEB(12.0, 16.0, 0.0, 8.0),
+                  child: Text(
+                    FFLocalizations.of(context).getText(
+                      'vuvjv4i1' /* of kies een favoriet */,
+                    ),
+                    style: FlutterFlowTheme.of(context).bodyMedium.override(
+                          font: GoogleFonts.roboto(
+                            fontWeight: FontWeight.w500,
+                            fontStyle: FlutterFlowTheme.of(context)
+                                .bodyMedium
+                                .fontStyle,
+                          ),
+                          letterSpacing: 0.0,
+                          fontWeight: FontWeight.w500,
+                          fontStyle:
+                              FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                        ),
+                  ),
+                ),
+                Builder(
+                  builder: (context) {
+                    final favorieteGemeenteItem =
+                        _model.favorieteGemeentenLijst.map((e) => e).toList();
+                    _model.debugGeneratorVariables[
+                            'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] =
+                        debugSerializeParam(
+                      favorieteGemeenteItem.take(100),
+                      ParamType.JSON,
+                      isList: true,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+                      name: 'dynamic',
+                      nullable: false,
+                    );
+                    debugLogWidgetClass(_model);
 
-              return Wrap(
-                spacing: 8.0,
-                runSpacing: 8.0,
-                alignment: WrapAlignment.start,
-                crossAxisAlignment: WrapCrossAlignment.start,
-                direction: Axis.horizontal,
-                runAlignment: WrapAlignment.start,
-                verticalDirection: VerticalDirection.down,
-                clipBehavior: Clip.none,
-                children: List.generate(favorieteGemeenteItem.length,
-                    (favorieteGemeenteItemIndex) {
-                  final favorieteGemeenteItemItem =
-                      favorieteGemeenteItem[favorieteGemeenteItemIndex];
-                  return InkWell(
-                    splashColor: Colors.transparent,
-                    focusColor: Colors.transparent,
-                    hoverColor: Colors.transparent,
-                    highlightColor: Colors.transparent,
-                    onTap: () async {
-                      FFAppState().gemeenteSelectId = getJsonField(
-                        favorieteGemeenteItemItem,
-                        r'''$.nid''',
-                      ).toString();
-                      FFAppState().gemeenteSelectNaam = getJsonField(
-                        favorieteGemeenteItemItem,
-                        r'''$.titel''',
-                      ).toString();
-                      FFAppState().provincieSelectId = getJsonField(
-                        favorieteGemeenteItemItem,
-                        r'''$.parent_nid''',
-                      ).toString();
-                      FFAppState().provincieSelectName = getJsonField(
-                        favorieteGemeenteItemItem,
-                        r'''$.parent_titel''',
-                      ).toString();
-                      safeSetState(() {});
-                      context.safePop();
-                    },
-                    child: Container(
-                      decoration: BoxDecoration(
-                        color: FlutterFlowTheme.of(context).secondaryBackground,
-                      ),
-                      child: Text(
-                        getJsonField(
-                          favorieteGemeenteItemItem,
-                          r'''$.titel''',
-                        ).toString(),
-                        style: FlutterFlowTheme.of(context).bodyMedium.override(
-                              font: GoogleFonts.roboto(
-                                fontWeight: FlutterFlowTheme.of(context)
-                                    .bodyMedium
-                                    .fontWeight,
-                                fontStyle: FlutterFlowTheme.of(context)
-                                    .bodyMedium
-                                    .fontStyle,
+                    return Column(
+                      mainAxisSize: MainAxisSize.min,
+                      crossAxisAlignment: CrossAxisAlignment.stretch,
+                      children: List.generate(favorieteGemeenteItem.length,
+                          (favorieteGemeenteItemIndex) {
+                        final favorieteGemeenteItemItem =
+                            favorieteGemeenteItem[favorieteGemeenteItemIndex];
+                        return InkWell(
+                          splashColor: Colors.transparent,
+                          focusColor: Colors.transparent,
+                          hoverColor: Colors.transparent,
+                          highlightColor: Colors.transparent,
+                          onTap: () async {
+                            FFAppState().gemeenteSelectId = getJsonField(
+                              favorieteGemeenteItemItem,
+                              r'''$.nid''',
+                            ).toString();
+                            FFAppState().gemeenteSelectNaam = getJsonField(
+                              favorieteGemeenteItemItem,
+                              r'''$.titel''',
+                            ).toString();
+                            FFAppState().provincieSelectId = getJsonField(
+                              favorieteGemeenteItemItem,
+                              r'''$.parent_nid''',
+                            ).toString();
+                            FFAppState().provincieSelectName = getJsonField(
+                              favorieteGemeenteItemItem,
+                              r'''$.parent_titel''',
+                            ).toString();
+                            safeSetState(() {});
+                            context.safePop();
+                          },
+                          child: Container(
+                            width: double.infinity,
+                            decoration: BoxDecoration(
+                              color: FlutterFlowTheme.of(context)
+                                  .primaryBackground,
+                              border: Border(
+                                bottom: BorderSide(
+                                  color: FlutterFlowTheme.of(context).alternate,
+                                  width: 1.0,
+                                ),
                               ),
-                              letterSpacing: 0.0,
-                              fontWeight: FlutterFlowTheme.of(context)
-                                  .bodyMedium
-                                  .fontWeight,
-                              fontStyle: FlutterFlowTheme.of(context)
-                                  .bodyMedium
-                                  .fontStyle,
                             ),
-                      ),
-                    ),
-                  );
-                }),
-              );
-            },
-          ),
+                            child: Padding(
+                              padding: EdgeInsets.all(12.0),
+                              child: Row(
+                                mainAxisSize: MainAxisSize.max,
+                                children: [
+                                  Padding(
+                                    padding: EdgeInsetsDirectional.fromSTEB(
+                                        0.0, 0.0, 8.0, 0.0),
+                                    child: Icon(
+                                      Icons.location_on,
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondary,
+                                      size: 20.0,
+                                    ),
+                                  ),
+                                  if (!functions.isHuidigeGemeente(
+                                      getJsonField(
+                                        favorieteGemeenteItemItem,
+                                        r'''$.nid''',
+                                      ),
+                                      FFAppState().gemeenteSelectId))
+                                    Expanded(
+                                      child: Text(
+                                        getJsonField(
+                                          favorieteGemeenteItemItem,
+                                          r'''$.titel''',
+                                        ).toString(),
+                                        style: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .override(
+                                              font: GoogleFonts.roboto(
+                                                fontWeight:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodyMedium
+                                                        .fontWeight,
+                                                fontStyle:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodyMedium
+                                                        .fontStyle,
+                                              ),
+                                              letterSpacing: 0.0,
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontStyle,
+                                            ),
+                                      ),
+                                    ),
+                                  if (functions.isHuidigeGemeente(
+                                      getJsonField(
+                                        favorieteGemeenteItemItem,
+                                        r'''$.nid''',
+                                      ),
+                                      FFAppState().gemeenteSelectId))
+                                    Expanded(
+                                      child: Text(
+                                        getJsonField(
+                                          favorieteGemeenteItemItem,
+                                          r'''$.titel''',
+                                        ).toString(),
+                                        style: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .override(
+                                              font: GoogleFonts.roboto(
+                                                fontWeight: FontWeight.w600,
+                                                fontStyle:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodyMedium
+                                                        .fontStyle,
+                                              ),
+                                              letterSpacing: 0.0,
+                                              fontWeight: FontWeight.w600,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontStyle,
+                                            ),
+                                      ),
+                                    ),
+                                  if (!functions.isHuidigeGemeente(
+                                      getJsonField(
+                                        favorieteGemeenteItemItem,
+                                        r'''$.nid''',
+                                      ),
+                                      FFAppState().gemeenteSelectId))
+                                    Icon(
+                                      Icons.chevron_right,
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryText,
+                                      size: 20.0,
+                                    ),
+                                  if (functions.isHuidigeGemeente(
+                                      getJsonField(
+                                        favorieteGemeenteItemItem,
+                                        r'''$.nid''',
+                                      ),
+                                      FFAppState().gemeenteSelectId))
+                                    Icon(
+                                      Icons.check,
+                                      color:
+                                          FlutterFlowTheme.of(context).tertiary,
+                                      size: 20.0,
+                                    ),
+                                ],
+                              ),
+                            ),
+                          ),
+                        );
+                      }),
+                    );
+                  },
+                ),
+              ],
+            ),
         ],
       ),
     );

+ 56 - 0
lib/shared/drawer_component/drawer_component_widget.dart

@@ -184,6 +184,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(HomeWidget.routeName);
                     },
                     child: Material(
@@ -344,6 +348,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -412,6 +420,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -480,6 +492,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -548,6 +564,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -616,6 +636,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -684,6 +708,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         HorecagelegenhedenOverzichtCurrentWidget.routeName,
                         queryParameters: {
@@ -748,6 +776,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         ThuisBezorgenWidget.routeName,
                         queryParameters: {
@@ -860,6 +892,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -928,6 +964,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -996,6 +1036,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -1064,6 +1108,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         PUitgaanPageWidget.routeName,
                         queryParameters: {
@@ -1135,6 +1183,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       hoverColor: Colors.transparent,
                       highlightColor: Colors.transparent,
                       onTap: () async {
+                        FFAppState().zoekterm = '';
+                        FFAppState().zoekOpen = false;
+                        safeSetState(() {});
+
                         context.pushNamed(
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
@@ -1205,6 +1257,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     hoverColor: Colors.transparent,
                     highlightColor: Colors.transparent,
                     onTap: () async {
+                      FFAppState().zoekterm = '';
+                      FFAppState().zoekOpen = false;
+                      safeSetState(() {});
+
                       context.pushNamed(
                         HorecagelegenhedenOverzichtProvinciePageWidget
                             .routeName,

+ 62 - 0
lib/shared/lege_lijst_melding/lege_lijst_melding_model.dart

@@ -0,0 +1,62 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import 'dart:ui';
+import '/flutter_flow/custom_functions.dart' as functions;
+import 'lege_lijst_melding_widget.dart' show LegeLijstMeldingWidget;
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class LegeLijstMeldingModel extends FlutterFlowModel<LegeLijstMeldingWidget> {
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'nlTekst': debugSerializeParam(
+            widget?.nlTekst,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=LegeLijstMelding',
+            searchReference:
+                'reference=ShkKEQoHbmxUZWtzdBIGZDE4czdwcgQIAyABUABaB25sVGVrc3Q=',
+            name: 'String',
+            nullable: true,
+          ),
+          'enTekst': debugSerializeParam(
+            widget?.enTekst,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=LegeLijstMelding',
+            searchReference:
+                'reference=ShkKEQoHZW5UZWtzdBIGMWJydjcxcgQIAyABUABaB2VuVGVrc3Q=',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=LegeLijstMelding',
+        searchReference:
+            'reference=OhBMZWdlTGlqc3RNZWxkaW5nUABaEExlZ2VMaWpzdE1lbGRpbmc=',
+        widgetClassName: 'LegeLijstMelding',
+      );
+}

+ 133 - 0
lib/shared/lege_lijst_melding/lege_lijst_melding_widget.dart

@@ -0,0 +1,133 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import 'dart:ui';
+import '/flutter_flow/custom_functions.dart' as functions;
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'lege_lijst_melding_model.dart';
+export 'lege_lijst_melding_model.dart';
+
+class LegeLijstMeldingWidget extends StatefulWidget {
+  const LegeLijstMeldingWidget({
+    super.key,
+    required this.nlTekst,
+    required this.enTekst,
+  });
+
+  final String? nlTekst;
+  final String? enTekst;
+
+  @override
+  State<LegeLijstMeldingWidget> createState() => _LegeLijstMeldingWidgetState();
+}
+
+class _LegeLijstMeldingWidgetState extends State<LegeLijstMeldingWidget>
+    with RouteAware {
+  late LegeLijstMeldingModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => LegeLijstMeldingModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(LegeLijstMeldingWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+
+    return Padding(
+      padding: EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 24.0, 24.0),
+      child: Column(
+        mainAxisSize: MainAxisSize.max,
+        mainAxisAlignment: MainAxisAlignment.center,
+        children: [
+          Icon(
+            Icons.event_busy,
+            color: FlutterFlowTheme.of(context).primaryText,
+            size: 48.0,
+          ),
+          Text(
+            functions.tweetalig(widget!.nlTekst!, widget!.enTekst!),
+            textAlign: TextAlign.center,
+            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).secondaryText,
+                  fontSize: 16.0,
+                  letterSpacing: 0.0,
+                  fontWeight:
+                      FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                  fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                ),
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 1 - 0
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_model.dart

@@ -1,4 +1,5 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/fotoboek_grid_component_widget.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_drop_down.dart';
 import '/flutter_flow/flutter_flow_theme.dart';

+ 331 - 168
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart

@@ -1,4 +1,5 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/fotoboek_grid_component_widget.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_drop_down.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
@@ -755,6 +756,7 @@ class _StadsactiviteitAanmakenWidgetState
                                             .jsonBody)!,
                                     width: double.infinity,
                                     height: 40.0,
+                                    maxHeight: 300.0,
                                     searchHintTextStyle:
                                         FlutterFlowTheme.of(context)
                                             .labelMedium
@@ -865,6 +867,31 @@ class _StadsactiviteitAanmakenWidgetState
                                 },
                               ),
                             ),
+                            Text(
+                              functions.categorieGekozenTekst(
+                                  _model.createCategorieTids.toList()),
+                              style: FlutterFlowTheme.of(context)
+                                  .bodySmall
+                                  .override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontStyle,
+                                    ),
+                                    color: FlutterFlowTheme.of(context)
+                                        .secondaryText,
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .fontStyle,
+                                  ),
+                            ),
                           ],
                         ),
                       ),
@@ -3442,160 +3469,68 @@ class _StadsactiviteitAanmakenWidgetState
                                 alignment: AlignmentDirectional(-1.0, 0.0),
                                 child: FFButtonWidget(
                                   onPressed: () async {
-                                    final selectedMedia =
-                                        await selectMediaWithSourceBottomSheet(
-                                      context: context,
-                                      allowPhoto: true,
-                                    );
-                                    if (selectedMedia != null &&
-                                        selectedMedia.every((m) =>
-                                            validateFileFormat(
-                                                m.storagePath, context))) {
-                                      safeSetState(() => _model
-                                              .isDataUploading_uploadDatalogoUpload =
-                                          true);
-                                      var selectedUploadedFiles =
-                                          <FFUploadedFile>[];
-
-                                      try {
-                                        selectedUploadedFiles = selectedMedia
-                                            .map((m) => FFUploadedFile(
-                                                  name: m.storagePath
-                                                      .split('/')
-                                                      .last,
-                                                  bytes: m.bytes,
-                                                  height: m.dimensions?.height,
-                                                  width: m.dimensions?.width,
-                                                  blurHash: m.blurHash,
-                                                  originalFilename:
-                                                      m.originalFilename,
-                                                ))
-                                            .toList();
-                                      } finally {
-                                        _model.isDataUploading_uploadDatalogoUpload =
+                                    var confirmDialogResponse =
+                                        await showDialog<bool>(
+                                              context: context,
+                                              builder: (alertDialogContext) {
+                                                return AlertDialog(
+                                                  title: Text(
+                                                      'Waar komt het logo vandaan?'),
+                                                  actions: [
+                                                    TextButton(
+                                                      onPressed: () =>
+                                                          Navigator.pop(
+                                                              alertDialogContext,
+                                                              false),
+                                                      child: Text('Mobiel'),
+                                                    ),
+                                                    TextButton(
+                                                      onPressed: () =>
+                                                          Navigator.pop(
+                                                              alertDialogContext,
+                                                              true),
+                                                      child: Text('Fotoboek'),
+                                                    ),
+                                                  ],
+                                                );
+                                              },
+                                            ) ??
                                             false;
-                                      }
-                                      if (selectedUploadedFiles.length ==
-                                          selectedMedia.length) {
-                                        safeSetState(() {
-                                          _model.uploadedLocalFile_uploadDatalogoUpload =
-                                              selectedUploadedFiles.first;
-                                        });
-                                      } else {
-                                        safeSetState(() {});
-                                        return;
-                                      }
-                                    }
-
-                                    _model.logouploadResult =
-                                        await actions.bestandUpload(
-                                      _model
-                                          .uploadedLocalFile_uploadDatalogoUpload,
-                                      '/en/flutterdrup/bestand_upload/upload.json',
-                                      FFAppState().userSessionname,
-                                      FFAppState().userSessionid,
-                                      FFAppState().userToken,
-                                    );
-                                    if (getJsonField(
-                                      _model.logouploadResult,
-                                      r'''$.success''',
-                                    )) {
-                                      _model.createLogoFid = getJsonField(
-                                        _model.logouploadResult,
-                                        r'''$.fid''',
-                                      ).toString();
-                                      _model.createLogoUrl = getJsonField(
-                                        _model.logouploadResult,
-                                        r'''$.url''',
-                                      ).toString();
-                                      safeSetState(() {});
-                                    } else {
-                                      ScaffoldMessenger.of(context)
-                                          .showSnackBar(
-                                        SnackBar(
-                                          content: Text(
-                                            getJsonField(
-                                              _model.logouploadResult,
-                                              r'''$.error''',
-                                            ).toString(),
-                                            style: TextStyle(
-                                              color:
-                                                  FlutterFlowTheme.of(context)
-                                                      .primaryText,
+                                    if (confirmDialogResponse) {
+                                      await showModalBottomSheet(
+                                        isScrollControlled: true,
+                                        backgroundColor: Colors.transparent,
+                                        enableDrag: false,
+                                        context: context,
+                                        builder: (context) {
+                                          return GestureDetector(
+                                            onTap: () {
+                                              FocusScope.of(context).unfocus();
+                                              FocusManager.instance.primaryFocus
+                                                  ?.unfocus();
+                                            },
+                                            child: Padding(
+                                              padding: MediaQuery.viewInsetsOf(
+                                                  context),
+                                              child: Container(
+                                                height:
+                                                    MediaQuery.sizeOf(context)
+                                                            .height *
+                                                        0.85,
+                                                child:
+                                                    FotoboekGridComponentWidget(
+                                                  bijKeuze: (fid, url) async {
+                                                    _model.createLogoFid = fid;
+                                                    _model.createLogoUrl = url;
+                                                    safeSetState(() {});
+                                                  },
+                                                ),
+                                              ),
                                             ),
-                                          ),
-                                          duration:
-                                              Duration(milliseconds: 4000),
-                                          backgroundColor:
-                                              FlutterFlowTheme.of(context)
-                                                  .secondary,
-                                        ),
-                                      );
-                                    }
-
-                                    safeSetState(() {});
-                                  },
-                                  text: FFLocalizations.of(context).getText(
-                                    'r6ckp0e0' /* Logo kiezen */,
-                                  ),
-                                  options: FFButtonOptions(
-                                    height: 40.0,
-                                    padding: EdgeInsetsDirectional.fromSTEB(
-                                        16.0, 0.0, 16.0, 0.0),
-                                    iconPadding: EdgeInsetsDirectional.fromSTEB(
-                                        0.0, 0.0, 0.0, 0.0),
-                                    color:
-                                        FlutterFlowTheme.of(context).secondary,
-                                    textStyle: FlutterFlowTheme.of(context)
-                                        .titleSmall
-                                        .override(
-                                          font: GoogleFonts.roboto(
-                                            fontWeight:
-                                                FlutterFlowTheme.of(context)
-                                                    .titleSmall
-                                                    .fontWeight,
-                                            fontStyle:
-                                                FlutterFlowTheme.of(context)
-                                                    .titleSmall
-                                                    .fontStyle,
-                                          ),
-                                          color: Colors.white,
-                                          letterSpacing: 0.0,
-                                          fontWeight:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontWeight,
-                                          fontStyle:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontStyle,
-                                        ),
-                                    elevation: 0.0,
-                                    borderRadius: BorderRadius.circular(8.0),
-                                  ),
-                                ),
-                              ),
-                              if (_model.createLogoUrl != null &&
-                                  _model.createLogoUrl != '')
-                                ClipRRect(
-                                  borderRadius: BorderRadius.circular(0.0),
-                                  child: Image.network(
-                                    _model.createLogoUrl!,
-                                    width: 80.0,
-                                    height: 80.0,
-                                    fit: BoxFit.contain,
-                                  ),
-                                ),
-                            ],
-                          ),
-                          Row(
-                            mainAxisSize: MainAxisSize.max,
-                            children: [
-                              if (_model.createFotosFids.length < 5)
-                                Align(
-                                  alignment: AlignmentDirectional(-1.0, 0.0),
-                                  child: FFButtonWidget(
-                                    onPressed: () async {
+                                          );
+                                        },
+                                      ).then((value) => safeSetState(() {}));
+                                    } else {
                                       final selectedMedia =
                                           await selectMediaWithSourceBottomSheet(
                                         context: context,
@@ -3606,7 +3541,7 @@ class _StadsactiviteitAanmakenWidgetState
                                               validateFileFormat(
                                                   m.storagePath, context))) {
                                         safeSetState(() => _model
-                                                .isDataUploading_uploadDataFotoos2 =
+                                                .isDataUploading_uploadDatalogoUpload =
                                             true);
                                         var selectedUploadedFiles =
                                             <FFUploadedFile>[];
@@ -3627,13 +3562,13 @@ class _StadsactiviteitAanmakenWidgetState
                                                   ))
                                               .toList();
                                         } finally {
-                                          _model.isDataUploading_uploadDataFotoos2 =
+                                          _model.isDataUploading_uploadDatalogoUpload =
                                               false;
                                         }
                                         if (selectedUploadedFiles.length ==
                                             selectedMedia.length) {
                                           safeSetState(() {
-                                            _model.uploadedLocalFile_uploadDataFotoos2 =
+                                            _model.uploadedLocalFile_uploadDatalogoUpload =
                                                 selectedUploadedFiles.first;
                                           });
                                         } else {
@@ -3642,29 +3577,27 @@ class _StadsactiviteitAanmakenWidgetState
                                         }
                                       }
 
-                                      _model.fotouploadResult =
+                                      _model.logouploadResult =
                                           await actions.bestandUpload(
                                         _model
-                                            .uploadedLocalFile_uploadDataFotoos2,
+                                            .uploadedLocalFile_uploadDatalogoUpload,
                                         '/en/flutterdrup/bestand_upload/upload.json',
                                         FFAppState().userSessionname,
                                         FFAppState().userSessionid,
                                         FFAppState().userToken,
                                       );
                                       if (getJsonField(
-                                        _model.fotouploadResult,
+                                        _model.logouploadResult,
                                         r'''$.success''',
                                       )) {
-                                        _model
-                                            .addToCreateFotosFids(getJsonField(
-                                          _model.fotouploadResult,
+                                        _model.createLogoFid = getJsonField(
+                                          _model.logouploadResult,
                                           r'''$.fid''',
-                                        ).toString());
-                                        _model
-                                            .addToCreateFotosUrls(getJsonField(
-                                          _model.fotouploadResult,
+                                        ).toString();
+                                        _model.createLogoUrl = getJsonField(
+                                          _model.logouploadResult,
                                           r'''$.url''',
-                                        ).toString());
+                                        ).toString();
                                         safeSetState(() {});
                                       } else {
                                         ScaffoldMessenger.of(context)
@@ -3672,8 +3605,8 @@ class _StadsactiviteitAanmakenWidgetState
                                           SnackBar(
                                             content: Text(
                                               getJsonField(
-                                                _model.fotouploadResult,
-                                                r'''$.success''',
+                                                _model.logouploadResult,
+                                                r'''$.error''',
                                               ).toString(),
                                               style: TextStyle(
                                                 color:
@@ -3689,6 +3622,236 @@ class _StadsactiviteitAanmakenWidgetState
                                           ),
                                         );
                                       }
+                                    }
+
+                                    safeSetState(() {});
+                                  },
+                                  text: FFLocalizations.of(context).getText(
+                                    'r6ckp0e0' /* Logo kiezen */,
+                                  ),
+                                  options: FFButtonOptions(
+                                    height: 40.0,
+                                    padding: EdgeInsetsDirectional.fromSTEB(
+                                        16.0, 0.0, 16.0, 0.0),
+                                    iconPadding: EdgeInsetsDirectional.fromSTEB(
+                                        0.0, 0.0, 0.0, 0.0),
+                                    color:
+                                        FlutterFlowTheme.of(context).secondary,
+                                    textStyle: FlutterFlowTheme.of(context)
+                                        .titleSmall
+                                        .override(
+                                          font: GoogleFonts.roboto(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .titleSmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .titleSmall
+                                                    .fontStyle,
+                                          ),
+                                          color: Colors.white,
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontStyle,
+                                        ),
+                                    elevation: 0.0,
+                                    borderRadius: BorderRadius.circular(8.0),
+                                  ),
+                                ),
+                              ),
+                              if (_model.createLogoUrl != null &&
+                                  _model.createLogoUrl != '')
+                                ClipRRect(
+                                  borderRadius: BorderRadius.circular(0.0),
+                                  child: Image.network(
+                                    _model.createLogoUrl!,
+                                    width: 80.0,
+                                    height: 80.0,
+                                    fit: BoxFit.contain,
+                                  ),
+                                ),
+                            ],
+                          ),
+                          Row(
+                            mainAxisSize: MainAxisSize.max,
+                            children: [
+                              if (_model.createFotosFids.length < 5)
+                                Align(
+                                  alignment: AlignmentDirectional(-1.0, 0.0),
+                                  child: FFButtonWidget(
+                                    onPressed: () async {
+                                      var confirmDialogResponse =
+                                          await showDialog<bool>(
+                                                context: context,
+                                                builder: (alertDialogContext) {
+                                                  return AlertDialog(
+                                                    title: Text(
+                                                        'Waar komen de foto\'s vandaan?'),
+                                                    actions: [
+                                                      TextButton(
+                                                        onPressed: () =>
+                                                            Navigator.pop(
+                                                                alertDialogContext,
+                                                                false),
+                                                        child: Text('Mobiel'),
+                                                      ),
+                                                      TextButton(
+                                                        onPressed: () =>
+                                                            Navigator.pop(
+                                                                alertDialogContext,
+                                                                true),
+                                                        child: Text('Fotoboek'),
+                                                      ),
+                                                    ],
+                                                  );
+                                                },
+                                              ) ??
+                                              false;
+                                      if (confirmDialogResponse) {
+                                        await showModalBottomSheet(
+                                          isScrollControlled: true,
+                                          backgroundColor: Colors.transparent,
+                                          enableDrag: false,
+                                          context: context,
+                                          builder: (context) {
+                                            return GestureDetector(
+                                              onTap: () {
+                                                FocusScope.of(context)
+                                                    .unfocus();
+                                                FocusManager
+                                                    .instance.primaryFocus
+                                                    ?.unfocus();
+                                              },
+                                              child: Padding(
+                                                padding:
+                                                    MediaQuery.viewInsetsOf(
+                                                        context),
+                                                child: Container(
+                                                  height:
+                                                      MediaQuery.sizeOf(context)
+                                                              .height *
+                                                          0.85,
+                                                  child:
+                                                      FotoboekGridComponentWidget(
+                                                    bijKeuze: (fid, url) async {
+                                                      _model
+                                                          .addToCreateFotosFids(
+                                                              fid);
+                                                      _model
+                                                          .addToCreateFotosUrls(
+                                                              url);
+                                                      safeSetState(() {});
+                                                    },
+                                                  ),
+                                                ),
+                                              ),
+                                            );
+                                          },
+                                        ).then((value) => safeSetState(() {}));
+                                      } else {
+                                        final selectedMedia =
+                                            await selectMediaWithSourceBottomSheet(
+                                          context: context,
+                                          allowPhoto: true,
+                                        );
+                                        if (selectedMedia != null &&
+                                            selectedMedia.every((m) =>
+                                                validateFileFormat(
+                                                    m.storagePath, context))) {
+                                          safeSetState(() => _model
+                                                  .isDataUploading_uploadDataFotoos2 =
+                                              true);
+                                          var selectedUploadedFiles =
+                                              <FFUploadedFile>[];
+
+                                          try {
+                                            selectedUploadedFiles =
+                                                selectedMedia
+                                                    .map((m) => FFUploadedFile(
+                                                          name: m.storagePath
+                                                              .split('/')
+                                                              .last,
+                                                          bytes: m.bytes,
+                                                          height: m.dimensions
+                                                              ?.height,
+                                                          width: m.dimensions
+                                                              ?.width,
+                                                          blurHash: m.blurHash,
+                                                          originalFilename: m
+                                                              .originalFilename,
+                                                        ))
+                                                    .toList();
+                                          } finally {
+                                            _model.isDataUploading_uploadDataFotoos2 =
+                                                false;
+                                          }
+                                          if (selectedUploadedFiles.length ==
+                                              selectedMedia.length) {
+                                            safeSetState(() {
+                                              _model.uploadedLocalFile_uploadDataFotoos2 =
+                                                  selectedUploadedFiles.first;
+                                            });
+                                          } else {
+                                            safeSetState(() {});
+                                            return;
+                                          }
+                                        }
+
+                                        _model.fotouploadResult =
+                                            await actions.bestandUpload(
+                                          _model
+                                              .uploadedLocalFile_uploadDataFotoos2,
+                                          '/en/flutterdrup/bestand_upload/upload.json',
+                                          FFAppState().userSessionname,
+                                          FFAppState().userSessionid,
+                                          FFAppState().userToken,
+                                        );
+                                        if (getJsonField(
+                                          _model.fotouploadResult,
+                                          r'''$.success''',
+                                        )) {
+                                          _model.addToCreateFotosFids(
+                                              getJsonField(
+                                            _model.fotouploadResult,
+                                            r'''$.fid''',
+                                          ).toString());
+                                          _model.addToCreateFotosUrls(
+                                              getJsonField(
+                                            _model.fotouploadResult,
+                                            r'''$.url''',
+                                          ).toString());
+                                          safeSetState(() {});
+                                        } else {
+                                          ScaffoldMessenger.of(context)
+                                              .showSnackBar(
+                                            SnackBar(
+                                              content: Text(
+                                                getJsonField(
+                                                  _model.fotouploadResult,
+                                                  r'''$.success''',
+                                                ).toString(),
+                                                style: TextStyle(
+                                                  color: FlutterFlowTheme.of(
+                                                          context)
+                                                      .primaryText,
+                                                ),
+                                              ),
+                                              duration:
+                                                  Duration(milliseconds: 4000),
+                                              backgroundColor:
+                                                  FlutterFlowTheme.of(context)
+                                                      .secondary,
+                                            ),
+                                          );
+                                        }
+                                      }
 
                                       safeSetState(() {});
                                     },

+ 1 - 0
lib/thuis_bezorgen/thuis_bezorgen_model.dart

@@ -5,6 +5,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import 'dart:async';
 import 'thuis_bezorgen_widget.dart' show ThuisBezorgenWidget;

+ 5 - 2
lib/thuis_bezorgen/thuis_bezorgen_widget.dart

@@ -5,6 +5,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import 'dart:ui';
 import 'dart:async';
 import 'package:flutter/material.dart';
@@ -209,8 +210,10 @@ class _ThuisBezorgenWidgetState extends State<ThuisBezorgenWidget>
                         ),
                       ),
                       noItemsFoundIndicatorBuilder: (_) => Center(
-                        child: Image.asset(
-                          'assets/images/logo800px.png',
+                        child: LegeLijstMeldingWidget(
+                          nlTekst:
+                              'Geen bezorgdiensten gevonden in deze plaats.',
+                          enTekst: 'No delivery services found in this town.',
                         ),
                       ),
                       itemBuilder: (context, _, bezorgerItemIndex) {

+ 0 - 43
lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_model.dart

@@ -117,22 +117,6 @@ class UitgaansevenementAanmakenModel
   void updateCreateFotosUrlsAtIndex(int index, Function(String) updateFn) =>
       createFotosUrls[index] = updateFn(createFotosUrls[index]);
 
-  bool _fotoboekOpen = false;
-  set fotoboekOpen(bool value) {
-    _fotoboekOpen = value;
-    debugLogWidgetClass(this);
-  }
-
-  bool get fotoboekOpen => _fotoboekOpen;
-
-  String _fotoboekDoel = '';
-  set fotoboekDoel(String value) {
-    _fotoboekDoel = value;
-    debugLogWidgetClass(this);
-  }
-
-  String get fotoboekDoel => _fotoboekDoel;
-
   ///  State fields for stateful widgets in this page.
 
   // Stores action output result for [Backend Call - API (MijnHorecagelegenheden)] action in uitgaansevenementAanmaken widget.
@@ -248,8 +232,6 @@ class UitgaansevenementAanmakenModel
 
   dynamic? get fotoEvenementuploadResult => _fotoEvenementuploadResult;
 
-  // Model for FotoboekGridComponent component.
-  late FotoboekGridComponentModel fotoboekGridComponentModel;
   // Stores action output result for [Custom Action - evenementCreate] action in ButtonIndienen widget.
   dynamic? _createResult;
   set createResult(dynamic? value) {
@@ -269,8 +251,6 @@ class UitgaansevenementAanmakenModel
   final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
   @override
   void initState(BuildContext context) {
-    fotoboekGridComponentModel =
-        createModel(context, () => FotoboekGridComponentModel());
     headerButtonsComponentModel =
         createModel(context, () => HeaderButtonsComponentModel());
     drawerComponentModel = createModel(context, () => DrawerComponentModel());
@@ -304,7 +284,6 @@ class UitgaansevenementAanmakenModel
     textFieldEntreeprijsFocusNode?.dispose();
     textFieldEntreeprijsTextController?.dispose();
 
-    fotoboekGridComponentModel.dispose();
     headerButtonsComponentModel.dispose();
     drawerComponentModel.dispose();
   }
@@ -396,26 +375,6 @@ class UitgaansevenementAanmakenModel
                 'reference=QiIKGAoPY3JlYXRlRm90b3NVcmxzEgVjZDhwNXIGEgIIBCABUAFaD2NyZWF0ZUZvdG9zVXJsc2IZdWl0Z2FhbnNldmVuZW1lbnRBYW5tYWtlbg==',
             name: 'String',
             nullable: false,
-          ),
-          'fotoboekOpen': debugSerializeParam(
-            fotoboekOpen,
-            ParamType.bool,
-            link:
-                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=uitgaansevenementAanmaken',
-            searchReference:
-                'reference=QiYKFQoMZm90b2JvZWtPcGVuEgV5MTlhYioHEgVmYWxzZXIECAUgAVABWgxmb3RvYm9la09wZW5iGXVpdGdhYW5zZXZlbmVtZW50QWFubWFrZW4=',
-            name: 'bool',
-            nullable: false,
-          ),
-          'fotoboekDoel': debugSerializeParam(
-            fotoboekDoel,
-            ParamType.String,
-            link:
-                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=uitgaansevenementAanmaken',
-            searchReference:
-                'reference=QiEKFQoMZm90b2JvZWtEb2VsEgV2dTNpeSoCEgByBAgDIAFQAVoMZm90b2JvZWtEb2VsYhl1aXRnYWFuc2V2ZW5lbWVudEFhbm1ha2Vu',
-            name: 'String',
-            nullable: false,
           )
         }.entries,
         widgetStates: {
@@ -546,8 +505,6 @@ class UitgaansevenementAanmakenModel
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
-          'fotoboekGridComponentModel (FotoboekGridComponent)':
-              fotoboekGridComponentModel?.toWidgetClassDebugData(),
           'headerButtonsComponentModel (HeaderButtonsComponent)':
               headerButtonsComponentModel?.toWidgetClassDebugData(),
           'drawerComponentModel (drawerComponent)':

+ 321 - 267
lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_widget.dart

@@ -290,7 +290,7 @@ class _UitgaansevenementAanmakenWidgetState
                               FlutterFlowTheme.of(context).secondaryBackground,
                           borderRadius: BorderRadius.only(),
                           border: Border.all(
-                            color: Color(0xFFEEEEEE),
+                            color: FlutterFlowTheme.of(context).alternate,
                             width: 3.0,
                           ),
                         ),
@@ -985,6 +985,7 @@ class _UitgaansevenementAanmakenWidgetState
                                             .jsonBody)!,
                                     width: double.infinity,
                                     height: 40.0,
+                                    maxHeight: 300.0,
                                     searchHintTextStyle:
                                         FlutterFlowTheme.of(context)
                                             .labelMedium
@@ -1095,6 +1096,31 @@ class _UitgaansevenementAanmakenWidgetState
                                 },
                               ),
                             ),
+                            Text(
+                              functions.categorieGekozenTekst(
+                                  _model.createCategorieTids.toList()),
+                              style: FlutterFlowTheme.of(context)
+                                  .bodySmall
+                                  .override(
+                                    font: GoogleFonts.roboto(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontStyle,
+                                    ),
+                                    color: FlutterFlowTheme.of(context)
+                                        .secondaryText,
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .fontStyle,
+                                  ),
+                            ),
                           ],
                         ),
                       ),
@@ -1745,7 +1771,7 @@ class _UitgaansevenementAanmakenWidgetState
                               FlutterFlowTheme.of(context).secondaryBackground,
                           borderRadius: BorderRadius.only(),
                           border: Border.all(
-                            color: Color(0xFFEEEEEE),
+                            color: FlutterFlowTheme.of(context).alternate,
                             width: 3.0,
                           ),
                         ),
@@ -2089,7 +2115,7 @@ class _UitgaansevenementAanmakenWidgetState
                               FlutterFlowTheme.of(context).secondaryBackground,
                           borderRadius: BorderRadius.only(),
                           border: Border.all(
-                            color: Color(0xFFEEEEEE),
+                            color: FlutterFlowTheme.of(context).alternate,
                             width: 3.0,
                           ),
                         ),
@@ -2649,227 +2675,67 @@ class _UitgaansevenementAanmakenWidgetState
                               alignment: AlignmentDirectional(-1.0, 0.0),
                               child: FFButtonWidget(
                                 onPressed: () async {
-                                  final selectedMedia =
-                                      await selectMediaWithSourceBottomSheet(
-                                    context: context,
-                                    allowPhoto: true,
-                                  );
-                                  if (selectedMedia != null &&
-                                      selectedMedia.every((m) =>
-                                          validateFileFormat(
-                                              m.storagePath, context))) {
-                                    safeSetState(() => _model
-                                            .isDataUploading_uploadDataLogoEvenement =
-                                        true);
-                                    var selectedUploadedFiles =
-                                        <FFUploadedFile>[];
-
-                                    try {
-                                      selectedUploadedFiles = selectedMedia
-                                          .map((m) => FFUploadedFile(
-                                                name: m.storagePath
-                                                    .split('/')
-                                                    .last,
-                                                bytes: m.bytes,
-                                                height: m.dimensions?.height,
-                                                width: m.dimensions?.width,
-                                                blurHash: m.blurHash,
-                                                originalFilename:
-                                                    m.originalFilename,
-                                              ))
-                                          .toList();
-                                    } finally {
-                                      _model.isDataUploading_uploadDataLogoEvenement =
+                                  var confirmDialogResponse =
+                                      await showDialog<bool>(
+                                            context: context,
+                                            builder: (alertDialogContext) {
+                                              return AlertDialog(
+                                                title: Text(
+                                                    'Waar komt het logo vandaan?'),
+                                                actions: [
+                                                  TextButton(
+                                                    onPressed: () =>
+                                                        Navigator.pop(
+                                                            alertDialogContext,
+                                                            false),
+                                                    child: Text('Mobiel'),
+                                                  ),
+                                                  TextButton(
+                                                    onPressed: () =>
+                                                        Navigator.pop(
+                                                            alertDialogContext,
+                                                            true),
+                                                    child: Text('Fotoboek'),
+                                                  ),
+                                                ],
+                                              );
+                                            },
+                                          ) ??
                                           false;
-                                    }
-                                    if (selectedUploadedFiles.length ==
-                                        selectedMedia.length) {
-                                      safeSetState(() {
-                                        _model.uploadedLocalFile_uploadDataLogoEvenement =
-                                            selectedUploadedFiles.first;
-                                      });
-                                    } else {
-                                      safeSetState(() {});
-                                      return;
-                                    }
-                                  }
-
-                                  _model.logoevenementuploadResult =
-                                      await actions.bestandUpload(
-                                    _model
-                                        .uploadedLocalFile_uploadDataLogoEvenement,
-                                    '/en/flutterdrup/bestand_upload/upload.json',
-                                    FFAppState().userSessionname,
-                                    FFAppState().userSessionid,
-                                    FFAppState().userToken,
-                                  );
-                                  if (getJsonField(
-                                    _model.logoevenementuploadResult,
-                                    r'''$.success''',
-                                  )) {
-                                    _model.createLogoFid = getJsonField(
-                                      _model.logoevenementuploadResult,
-                                      r'''$.fid''',
-                                    ).toString();
-                                    _model.createLogoUrl = getJsonField(
-                                      _model.logoevenementuploadResult,
-                                      r'''$.url''',
-                                    ).toString();
-                                    safeSetState(() {});
-                                  } else {
-                                    ScaffoldMessenger.of(context).showSnackBar(
-                                      SnackBar(
-                                        content: Text(
-                                          getJsonField(
-                                            _model.logoevenementuploadResult,
-                                            r'''$.error''',
-                                          ).toString(),
-                                          style: TextStyle(
-                                            color: FlutterFlowTheme.of(context)
-                                                .primaryText,
-                                          ),
-                                        ),
-                                        duration: Duration(milliseconds: 4000),
-                                        backgroundColor:
-                                            FlutterFlowTheme.of(context)
-                                                .secondary,
-                                      ),
-                                    );
-                                  }
-
-                                  safeSetState(() {});
-                                },
-                                text: FFLocalizations.of(context).getText(
-                                  'df4oowbq' /* Logo kiezen */,
-                                ),
-                                options: FFButtonOptions(
-                                  height: 40.0,
-                                  padding: EdgeInsetsDirectional.fromSTEB(
-                                      16.0, 0.0, 16.0, 0.0),
-                                  iconPadding: EdgeInsetsDirectional.fromSTEB(
-                                      0.0, 0.0, 0.0, 0.0),
-                                  color: FlutterFlowTheme.of(context).secondary,
-                                  textStyle: FlutterFlowTheme.of(context)
-                                      .titleSmall
-                                      .override(
-                                        font: GoogleFonts.roboto(
-                                          fontWeight:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontWeight,
-                                          fontStyle:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontStyle,
-                                        ),
-                                        color: Colors.white,
-                                        letterSpacing: 0.0,
-                                        fontWeight: FlutterFlowTheme.of(context)
-                                            .titleSmall
-                                            .fontWeight,
-                                        fontStyle: FlutterFlowTheme.of(context)
-                                            .titleSmall
-                                            .fontStyle,
-                                      ),
-                                  elevation: 0.0,
-                                  borderRadius: BorderRadius.circular(8.0),
-                                ),
-                              ),
-                            ),
-                            Align(
-                              alignment: AlignmentDirectional(-1.0, 0.0),
-                              child: FFButtonWidget(
-                                onPressed: () async {
-                                  await showModalBottomSheet(
-                                    isScrollControlled: true,
-                                    backgroundColor: Colors.transparent,
-                                    enableDrag: false,
-                                    context: context,
-                                    builder: (context) {
-                                      return GestureDetector(
-                                        onTap: () {
-                                          FocusScope.of(context).unfocus();
-                                          FocusManager.instance.primaryFocus
-                                              ?.unfocus();
-                                        },
-                                        child: Padding(
-                                          padding:
-                                              MediaQuery.viewInsetsOf(context),
-                                          child: Container(
-                                            height: MediaQuery.sizeOf(context)
-                                                    .height *
-                                                0.85,
-                                            child: FotoboekGridComponentWidget(
-                                              bijKeuze: (fid, url) async {
-                                                _model.createLogoFid = fid;
-                                                _model.createLogoUrl = url;
-                                                safeSetState(() {});
-                                              },
+                                  if (confirmDialogResponse) {
+                                    await showModalBottomSheet(
+                                      isScrollControlled: true,
+                                      backgroundColor: Colors.transparent,
+                                      enableDrag: false,
+                                      context: context,
+                                      builder: (context) {
+                                        return GestureDetector(
+                                          onTap: () {
+                                            FocusScope.of(context).unfocus();
+                                            FocusManager.instance.primaryFocus
+                                                ?.unfocus();
+                                          },
+                                          child: Padding(
+                                            padding: MediaQuery.viewInsetsOf(
+                                                context),
+                                            child: Container(
+                                              height: MediaQuery.sizeOf(context)
+                                                      .height *
+                                                  0.85,
+                                              child:
+                                                  FotoboekGridComponentWidget(
+                                                bijKeuze: (fid, url) async {
+                                                  _model.createLogoFid = fid;
+                                                  _model.createLogoUrl = url;
+                                                  safeSetState(() {});
+                                                },
+                                              ),
                                             ),
                                           ),
-                                        ),
-                                      );
-                                    },
-                                  ).then((value) => safeSetState(() {}));
-                                },
-                                text: FFLocalizations.of(context).getText(
-                                  'ml0k1fmv' /* Uit fotoboek */,
-                                ),
-                                options: FFButtonOptions(
-                                  height: 40.0,
-                                  padding: EdgeInsetsDirectional.fromSTEB(
-                                      16.0, 0.0, 16.0, 0.0),
-                                  iconPadding: EdgeInsetsDirectional.fromSTEB(
-                                      0.0, 0.0, 0.0, 0.0),
-                                  color: FlutterFlowTheme.of(context).secondary,
-                                  textStyle: FlutterFlowTheme.of(context)
-                                      .titleSmall
-                                      .override(
-                                        font: GoogleFonts.roboto(
-                                          fontWeight:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontWeight,
-                                          fontStyle:
-                                              FlutterFlowTheme.of(context)
-                                                  .titleSmall
-                                                  .fontStyle,
-                                        ),
-                                        color: Colors.white,
-                                        letterSpacing: 0.0,
-                                        fontWeight: FlutterFlowTheme.of(context)
-                                            .titleSmall
-                                            .fontWeight,
-                                        fontStyle: FlutterFlowTheme.of(context)
-                                            .titleSmall
-                                            .fontStyle,
-                                      ),
-                                  elevation: 0.0,
-                                  borderRadius: BorderRadius.circular(8.0),
-                                ),
-                              ),
-                            ),
-                            if (_model.createLogoUrl != null &&
-                                _model.createLogoUrl != '')
-                              ClipRRect(
-                                borderRadius: BorderRadius.circular(8.0),
-                                child: Image.network(
-                                  _model.createLogoUrl!,
-                                  width: 80.0,
-                                  height: 80.0,
-                                  fit: BoxFit.contain,
-                                ),
-                              ),
-                          ],
-                        ),
-                        Row(
-                          mainAxisSize: MainAxisSize.max,
-                          children: [
-                            if (_model.createFotosFids.length < 5)
-                              Align(
-                                alignment: AlignmentDirectional(-1.0, 0.0),
-                                child: FFButtonWidget(
-                                  onPressed: () async {
+                                        );
+                                      },
+                                    ).then((value) => safeSetState(() {}));
+                                  } else {
                                     final selectedMedia =
                                         await selectMediaWithSourceBottomSheet(
                                       context: context,
@@ -2880,7 +2746,7 @@ class _UitgaansevenementAanmakenWidgetState
                                             validateFileFormat(
                                                 m.storagePath, context))) {
                                       safeSetState(() => _model
-                                              .isDataUploading_uploadDataFotosEvent =
+                                              .isDataUploading_uploadDataLogoEvenement =
                                           true);
                                       var selectedUploadedFiles =
                                           <FFUploadedFile>[];
@@ -2900,13 +2766,13 @@ class _UitgaansevenementAanmakenWidgetState
                                                 ))
                                             .toList();
                                       } finally {
-                                        _model.isDataUploading_uploadDataFotosEvent =
+                                        _model.isDataUploading_uploadDataLogoEvenement =
                                             false;
                                       }
                                       if (selectedUploadedFiles.length ==
                                           selectedMedia.length) {
                                         safeSetState(() {
-                                          _model.uploadedLocalFile_uploadDataFotosEvent =
+                                          _model.uploadedLocalFile_uploadDataLogoEvenement =
                                               selectedUploadedFiles.first;
                                         });
                                       } else {
@@ -2915,27 +2781,27 @@ class _UitgaansevenementAanmakenWidgetState
                                       }
                                     }
 
-                                    _model.fotoEvenementuploadResult =
+                                    _model.logoevenementuploadResult =
                                         await actions.bestandUpload(
                                       _model
-                                          .uploadedLocalFile_uploadDataFotosEvent,
+                                          .uploadedLocalFile_uploadDataLogoEvenement,
                                       '/en/flutterdrup/bestand_upload/upload.json',
                                       FFAppState().userSessionname,
                                       FFAppState().userSessionid,
                                       FFAppState().userToken,
                                     );
                                     if (getJsonField(
-                                      _model.fotoEvenementuploadResult,
+                                      _model.logoevenementuploadResult,
                                       r'''$.success''',
                                     )) {
-                                      _model.addToCreateFotosFids(getJsonField(
-                                        _model.fotoEvenementuploadResult,
+                                      _model.createLogoFid = getJsonField(
+                                        _model.logoevenementuploadResult,
                                         r'''$.fid''',
-                                      ).toString());
-                                      _model.addToCreateFotosUrls(getJsonField(
-                                        _model.fotoEvenementuploadResult,
+                                      ).toString();
+                                      _model.createLogoUrl = getJsonField(
+                                        _model.logoevenementuploadResult,
                                         r'''$.url''',
-                                      ).toString());
+                                      ).toString();
                                       safeSetState(() {});
                                     } else {
                                       ScaffoldMessenger.of(context)
@@ -2943,7 +2809,7 @@ class _UitgaansevenementAanmakenWidgetState
                                         SnackBar(
                                           content: Text(
                                             getJsonField(
-                                              _model.fotoEvenementuploadResult,
+                                              _model.logoevenementuploadResult,
                                               r'''$.error''',
                                             ).toString(),
                                             style: TextStyle(
@@ -2960,6 +2826,227 @@ class _UitgaansevenementAanmakenWidgetState
                                         ),
                                       );
                                     }
+                                  }
+
+                                  safeSetState(() {});
+                                },
+                                text: FFLocalizations.of(context).getText(
+                                  'df4oowbq' /* Logo kiezen */,
+                                ),
+                                options: FFButtonOptions(
+                                  height: 40.0,
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      16.0, 0.0, 16.0, 0.0),
+                                  iconPadding: EdgeInsetsDirectional.fromSTEB(
+                                      0.0, 0.0, 0.0, 0.0),
+                                  color: FlutterFlowTheme.of(context).secondary,
+                                  textStyle: FlutterFlowTheme.of(context)
+                                      .titleSmall
+                                      .override(
+                                        font: GoogleFonts.roboto(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontStyle,
+                                        ),
+                                        color: Colors.white,
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .titleSmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .titleSmall
+                                            .fontStyle,
+                                      ),
+                                  elevation: 0.0,
+                                  borderRadius: BorderRadius.circular(8.0),
+                                ),
+                              ),
+                            ),
+                            if (_model.createLogoUrl != null &&
+                                _model.createLogoUrl != '')
+                              ClipRRect(
+                                borderRadius: BorderRadius.circular(8.0),
+                                child: Image.network(
+                                  _model.createLogoUrl!,
+                                  width: 80.0,
+                                  height: 80.0,
+                                  fit: BoxFit.contain,
+                                ),
+                              ),
+                          ],
+                        ),
+                        Row(
+                          mainAxisSize: MainAxisSize.max,
+                          children: [
+                            if (_model.createFotosFids.length < 5)
+                              Align(
+                                alignment: AlignmentDirectional(-1.0, 0.0),
+                                child: FFButtonWidget(
+                                  onPressed: () async {
+                                    var confirmDialogResponse =
+                                        await showDialog<bool>(
+                                              context: context,
+                                              builder: (alertDialogContext) {
+                                                return AlertDialog(
+                                                  title: Text(
+                                                      'Waar komen de foto\'s vandaan?'),
+                                                  actions: [
+                                                    TextButton(
+                                                      onPressed: () =>
+                                                          Navigator.pop(
+                                                              alertDialogContext,
+                                                              false),
+                                                      child: Text('Mobiel'),
+                                                    ),
+                                                    TextButton(
+                                                      onPressed: () =>
+                                                          Navigator.pop(
+                                                              alertDialogContext,
+                                                              true),
+                                                      child: Text('Fotoboek'),
+                                                    ),
+                                                  ],
+                                                );
+                                              },
+                                            ) ??
+                                            false;
+                                    if (confirmDialogResponse) {
+                                      await showModalBottomSheet(
+                                        isScrollControlled: true,
+                                        backgroundColor: Colors.transparent,
+                                        enableDrag: false,
+                                        context: context,
+                                        builder: (context) {
+                                          return GestureDetector(
+                                            onTap: () {
+                                              FocusScope.of(context).unfocus();
+                                              FocusManager.instance.primaryFocus
+                                                  ?.unfocus();
+                                            },
+                                            child: Padding(
+                                              padding: MediaQuery.viewInsetsOf(
+                                                  context),
+                                              child: Container(
+                                                height:
+                                                    MediaQuery.sizeOf(context)
+                                                            .height *
+                                                        0.85,
+                                                child:
+                                                    FotoboekGridComponentWidget(
+                                                  bijKeuze: (fid, url) async {
+                                                    _model.addToCreateFotosFids(
+                                                        fid);
+                                                    _model.addToCreateFotosUrls(
+                                                        url);
+                                                    safeSetState(() {});
+                                                  },
+                                                ),
+                                              ),
+                                            ),
+                                          );
+                                        },
+                                      ).then((value) => safeSetState(() {}));
+                                    } else {
+                                      final selectedMedia =
+                                          await selectMediaWithSourceBottomSheet(
+                                        context: context,
+                                        allowPhoto: true,
+                                      );
+                                      if (selectedMedia != null &&
+                                          selectedMedia.every((m) =>
+                                              validateFileFormat(
+                                                  m.storagePath, context))) {
+                                        safeSetState(() => _model
+                                                .isDataUploading_uploadDataFotosEvent =
+                                            true);
+                                        var selectedUploadedFiles =
+                                            <FFUploadedFile>[];
+
+                                        try {
+                                          selectedUploadedFiles = selectedMedia
+                                              .map((m) => FFUploadedFile(
+                                                    name: m.storagePath
+                                                        .split('/')
+                                                        .last,
+                                                    bytes: m.bytes,
+                                                    height:
+                                                        m.dimensions?.height,
+                                                    width: m.dimensions?.width,
+                                                    blurHash: m.blurHash,
+                                                    originalFilename:
+                                                        m.originalFilename,
+                                                  ))
+                                              .toList();
+                                        } finally {
+                                          _model.isDataUploading_uploadDataFotosEvent =
+                                              false;
+                                        }
+                                        if (selectedUploadedFiles.length ==
+                                            selectedMedia.length) {
+                                          safeSetState(() {
+                                            _model.uploadedLocalFile_uploadDataFotosEvent =
+                                                selectedUploadedFiles.first;
+                                          });
+                                        } else {
+                                          safeSetState(() {});
+                                          return;
+                                        }
+                                      }
+
+                                      _model.fotoEvenementuploadResult =
+                                          await actions.bestandUpload(
+                                        _model
+                                            .uploadedLocalFile_uploadDataFotosEvent,
+                                        '/en/flutterdrup/bestand_upload/upload.json',
+                                        FFAppState().userSessionname,
+                                        FFAppState().userSessionid,
+                                        FFAppState().userToken,
+                                      );
+                                      if (getJsonField(
+                                        _model.fotoEvenementuploadResult,
+                                        r'''$.success''',
+                                      )) {
+                                        _model
+                                            .addToCreateFotosFids(getJsonField(
+                                          _model.fotoEvenementuploadResult,
+                                          r'''$.fid''',
+                                        ).toString());
+                                        _model
+                                            .addToCreateFotosUrls(getJsonField(
+                                          _model.fotoEvenementuploadResult,
+                                          r'''$.url''',
+                                        ).toString());
+                                        safeSetState(() {});
+                                      } else {
+                                        ScaffoldMessenger.of(context)
+                                            .showSnackBar(
+                                          SnackBar(
+                                            content: Text(
+                                              getJsonField(
+                                                _model
+                                                    .fotoEvenementuploadResult,
+                                                r'''$.error''',
+                                              ).toString(),
+                                              style: TextStyle(
+                                                color:
+                                                    FlutterFlowTheme.of(context)
+                                                        .primaryText,
+                                              ),
+                                            ),
+                                            duration:
+                                                Duration(milliseconds: 4000),
+                                            backgroundColor:
+                                                FlutterFlowTheme.of(context)
+                                                    .secondary,
+                                          ),
+                                        );
+                                      }
+                                    }
 
                                     safeSetState(() {});
                                   },
@@ -3051,39 +3138,6 @@ class _UitgaansevenementAanmakenWidgetState
                               ),
                           ],
                         ),
-                        if (_model.fotoboekOpen)
-                          Padding(
-                            padding: EdgeInsetsDirectional.fromSTEB(
-                                0.0, 12.0, 0.0, 0.0),
-                            child: Container(
-                              height: 300.0,
-                              decoration: BoxDecoration(),
-                              child: Visibility(
-                                visible: _model.fotoboekOpen,
-                                child: Column(
-                                  mainAxisSize: MainAxisSize.max,
-                                  children: [
-                                    Expanded(
-                                      child: wrapWithModel(
-                                        model:
-                                            _model.fotoboekGridComponentModel,
-                                        updateCallback: () =>
-                                            safeSetState(() {}),
-                                        child: Builder(builder: (_) {
-                                          return DebugFlutterFlowModelContext(
-                                            rootModel: _model.rootModel,
-                                            child: FotoboekGridComponentWidget(
-                                              bijKeuze: (fid, url) async {},
-                                            ),
-                                          );
-                                        }),
-                                      ),
-                                    ),
-                                  ],
-                                ),
-                              ),
-                            ),
-                          ),
                       ],
                     ),
                   ),

+ 0 - 18
lib/uitgaanspaginas/home/home_model.dart

@@ -49,14 +49,6 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
 
   bool get tabJeugdGeladen => _tabJeugdGeladen;
 
-  bool _zoekOpen = false;
-  set zoekOpen(bool value) {
-    _zoekOpen = value;
-    debugLogWidgetClass(this);
-  }
-
-  bool get zoekOpen => _zoekOpen;
-
   ///  State fields for stateful widgets in this page.
 
   // Model for HomeUitgaanSliderComponent component.
@@ -167,16 +159,6 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
                 'reference=QikKGAoPdGFiSmV1Z2RHZWxhZGVuEgVwMTcxNSoHEgVmYWxzZXIECAUgAVABWg90YWJKZXVnZEdlbGFkZW5iBGhvbWU=',
             name: 'bool',
             nullable: false,
-          ),
-          'zoekOpen': debugSerializeParam(
-            zoekOpen,
-            ParamType.bool,
-            link:
-                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=home',
-            searchReference:
-                'reference=QiIKEQoIem9la09wZW4SBXRqYWlvKgcSBWZhbHNlcgQIBSABUAFaCHpvZWtPcGVuYgRob21l',
-            name: 'bool',
-            nullable: false,
           )
         }.entries,
         widgetStates: {

+ 1 - 3
lib/uitgaanspaginas/home/home_widget.dart

@@ -193,9 +193,7 @@ class _HomeWidgetState extends State<HomeWidget>
                 child: Builder(builder: (_) {
                   return DebugFlutterFlowModelContext(
                     rootModel: _model.rootModel,
-                    child: FilterBalkComponentWidget(
-                      parameter1: _model.zoekOpen,
-                    ),
+                    child: FilterBalkComponentWidget(),
                   );
                 }),
               ),

+ 1 - 0
lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_model.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
 import '/index.dart';
 import 'home_uitgaan_slider_component_widget.dart'

+ 4 - 2
lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
 import '/index.dart';
 import 'package:carousel_slider/carousel_slider.dart';
@@ -165,8 +166,9 @@ class _HomeUitgaanSliderComponentWidgetState
                             .take(12)
                             .toList();
                         if (homeslider.isEmpty) {
-                          return Image.asset(
-                            'assets/images/logo800px.png',
+                          return LegeLijstMeldingWidget(
+                            nlTekst: 'Op dit moment niets uitgelicht.',
+                            enTekst: 'Nothing featured right now.',
                           );
                         }
                         _model.debugGeneratorVariables[

+ 1 - 0
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_model.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
 import 'dart:ui';
 import '/index.dart';

+ 6 - 2
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
 import 'dart:ui';
 import '/index.dart';
@@ -185,8 +186,11 @@ class _HomeUitgaantabelKaartComponentWidgetState
               ),
             ),
             noItemsFoundIndicatorBuilder: (_) => Center(
-              child: Image.asset(
-                'assets/images/logo800px.png',
+              child: LegeLijstMeldingWidget(
+                nlTekst:
+                    'Er staat hier nog niets gepland. Probeer een andere datum of categorie.',
+                enTekst:
+                    'Nothing is planned here yet. Try another date or category.',
               ),
             ),
             itemBuilder: (context, _, evenementenIndex) {

+ 1 - 3
lib/uitgaanspaginas/p_uitgaan_page/p_uitgaan_page_widget.dart

@@ -210,9 +210,7 @@ class _PUitgaanPageWidgetState extends State<PUitgaanPageWidget>
               child: Builder(builder: (_) {
                 return DebugFlutterFlowModelContext(
                   rootModel: _model.rootModel,
-                  child: FilterBalkComponentWidget(
-                    parameter1: false,
-                  ),
+                  child: FilterBalkComponentWidget(),
                 );
               }),
             ),

+ 1 - 0
lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_model.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
 import '/index.dart';
 import 'p_uitgaan_slider_component_widget.dart'

+ 4 - 2
lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
 import '/index.dart';
 import 'package:carousel_slider/carousel_slider.dart';
@@ -162,8 +163,9 @@ class _PUitgaanSliderComponentWidgetState
                       .take(12)
                       .toList();
                   if (homeslider.isEmpty) {
-                    return Image.asset(
-                      'assets/images/logo800px.png',
+                    return LegeLijstMeldingWidget(
+                      nlTekst: 'Op dit moment niets uitgelicht.',
+                      enTekst: 'Nothing featured right now.',
                     );
                   }
                   _model.debugGeneratorVariables[

+ 1 - 0
lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_model.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:async';
 import 'p_uitgaantabel_kaart_component_widget.dart'

+ 5 - 2
lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart

@@ -2,6 +2,7 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
 import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:async';
 import 'package:flutter/material.dart';
@@ -181,8 +182,10 @@ class _PUitgaantabelKaartComponentWidgetState
                 ),
               ),
             ),
-            noItemsFoundIndicatorBuilder: (_) => Image.asset(
-              'assets/images/logo800px.png',
+            noItemsFoundIndicatorBuilder: (_) => LegeLijstMeldingWidget(
+              nlTekst:
+                  'Geen evenementen gevonden. Probeer een andere datum of zoekterm.',
+              enTekst: 'No events found. Try another date or search term.',
             ),
             itemBuilder: (context, _, evenementenIndex) {
               final evenementenItem = _model

+ 153 - 0
lib/uitgaanspaginas/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_model.dart

@@ -0,0 +1,153 @@
+import '/backend/api_requests/api_calls.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/index.dart';
+import 'dart:async';
+import 'p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_widget.dart'
+    show PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget;
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
+import 'package:provider/provider.dart';
+
+class PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGModel
+    extends FlutterFlowModel<
+        PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // State field(s) for ListView widget.
+
+  PagingController<ApiPagingParams, dynamic>? listViewPagingController;
+  Function(ApiPagingParams nextPageMarker)? listViewApiCall;
+
+  // Models for tagCategorieComponent dynamic component.
+  Map<String, FlutterFlowModel> tagCategorieComponentModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {
+    listViewPagingController?.dispose();
+  }
+
+  /// Additional helper methods.
+  PagingController<ApiPagingParams, dynamic> setListViewController(
+    Function(ApiPagingParams) apiCall,
+  ) {
+    listViewApiCall = apiCall;
+    return listViewPagingController ??= _createListViewController(apiCall);
+  }
+
+  PagingController<ApiPagingParams, dynamic> _createListViewController(
+    Function(ApiPagingParams) query,
+  ) {
+    final controller = PagingController<ApiPagingParams, dynamic>(
+      firstPageKey: ApiPagingParams(
+        nextPageNumber: 0,
+        numItems: 0,
+        lastResponse: null,
+      ),
+    );
+    return controller..addPageRequestListener(listViewUitgaanstabelPage);
+  }
+
+  void listViewUitgaanstabelPage(ApiPagingParams nextPageMarker) =>
+      listViewApiCall!(nextPageMarker).then((listViewUitgaanstabelResponse) {
+        final pageItems = (getJsonField(
+                  listViewUitgaanstabelResponse.jsonBody,
+                  r'''$''',
+                ) ??
+                [])
+            .toList() as List;
+        final newNumItems = nextPageMarker.numItems + pageItems.length;
+        listViewPagingController?.appendPage(
+          pageItems,
+          (pageItems.length > 0)
+              ? ApiPagingParams(
+                  nextPageNumber: nextPageMarker.nextPageNumber + 1,
+                  numItems: newNumItems,
+                  lastResponse: listViewUitgaanstabelResponse,
+                )
+              : null,
+        );
+      });
+
+  Future waitForOnePageForListView({
+    double minWait = 0,
+    double maxWait = double.infinity,
+  }) async {
+    final stopwatch = Stopwatch()..start();
+    while (true) {
+      await Future.delayed(Duration(milliseconds: 50));
+      final timeElapsed = stopwatch.elapsedMilliseconds;
+      final requestComplete =
+          (listViewPagingController?.nextPageKey?.nextPageNumber ?? 0) > 0;
+      if (timeElapsed > maxWait || (requestComplete && timeElapsed > minWait)) {
+        break;
+      }
+    }
+  }
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'towndid': debugSerializeParam(
+            widget?.towndid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEG',
+            searchReference:
+                'reference=ShkKEQoHdG93bmRpZBIGdjk5ZHVwcgQIAyABUABaB3Rvd25kaWQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEG',
+            searchReference:
+                'reference=ShsKEwoJZGlzcGxheWlkEgY1MHUzeWpyBAgDIAFQAFoJZGlzcGxheWlk',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'tagCategorieComponentModels (List<tagCategorieComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  tagCategorieComponentModels.length, (index) => '[$index]'),
+              tagCategorieComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEG',
+        searchReference:
+            'reference=OjdQVWl0Z2FhbnRhYmVsS2FhcnRDb21wb25lbnRPcmdpbmVlbE1ldEthYXJ0amVlcmluS0FOV0VHUABaN1BVaXRnYWFudGFiZWxLYWFydENvbXBvbmVudE9yZ2luZWVsTWV0S2FhcnRqZWVyaW5LQU5XRUc=',
+        widgetClassName:
+            'PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEG',
+      );
+}

+ 697 - 0
lib/uitgaanspaginas/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_widget.dart

@@ -0,0 +1,697 @@
+import '/backend/api_requests/api_calls.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/index.dart';
+import 'dart:async';
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
+import 'package:provider/provider.dart';
+import 'p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_model.dart';
+export 'p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_k_a_n_w_e_g_model.dart';
+
+class PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget
+    extends StatefulWidget {
+  const PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget({
+    super.key,
+    required this.towndid,
+    required this.displayid,
+  });
+
+  final String? towndid;
+  final String? displayid;
+
+  @override
+  State<PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget>
+      createState() =>
+          _PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidgetState();
+}
+
+class _PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidgetState
+    extends State<PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget>
+    with RouteAware {
+  late PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context,
+        () => PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(
+      PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEGWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+    _model.tagCategorieComponentModels.clear();
+
+    return Padding(
+      padding: EdgeInsetsDirectional.fromSTEB(
+          valueOrDefault<double>(
+            () {
+              if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
+                return 5.0;
+              } else if (MediaQuery.sizeOf(context).width < kBreakpointMedium) {
+                return 10.0;
+              } else if (MediaQuery.sizeOf(context).width < kBreakpointLarge) {
+                return 15.0;
+              } else {
+                return 10.0;
+              }
+            }(),
+            0.0,
+          ),
+          0.0,
+          0.0,
+          0.0),
+      child: RefreshIndicator(
+        onRefresh: () async {
+          safeSetState(() => _model.listViewPagingController?.refresh());
+          await _model.waitForOnePageForListView();
+        },
+        child: PagedListView<ApiPagingParams, dynamic>(
+          pagingController: _model.setListViewController(
+            (nextPageMarker) => UitgaanstabelCall.call(
+              page: nextPageMarker.nextPageNumber,
+              townid: widget!.towndid,
+              displayId: widget!.displayid,
+            ),
+          ),
+          padding: EdgeInsets.zero,
+          shrinkWrap: true,
+          reverse: false,
+          scrollDirection: Axis.vertical,
+          builderDelegate: PagedChildBuilderDelegate<dynamic>(
+            // Customize what your widget looks like when it's loading the first page.
+            firstPageProgressIndicatorBuilder: (_) => Center(
+              child: SizedBox(
+                width: 80.0,
+                height: 80.0,
+                child: SpinKitFadingCircle(
+                  color: FlutterFlowTheme.of(context).primary,
+                  size: 80.0,
+                ),
+              ),
+            ),
+            // Customize what your widget looks like when it's loading another page.
+            newPageProgressIndicatorBuilder: (_) => Center(
+              child: SizedBox(
+                width: 80.0,
+                height: 80.0,
+                child: SpinKitFadingCircle(
+                  color: FlutterFlowTheme.of(context).primary,
+                  size: 80.0,
+                ),
+              ),
+            ),
+
+            itemBuilder: (context, _, evenementenIndex) {
+              final evenementenItem =
+                  _model.listViewPagingController!.itemList![evenementenIndex];
+              return Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 12.0),
+                child: InkWell(
+                  splashColor: Colors.transparent,
+                  focusColor: Colors.transparent,
+                  hoverColor: Colors.transparent,
+                  highlightColor: Colors.transparent,
+                  onTap: () async {
+                    context.pushNamed(
+                      EventCurrentWidget.routeName,
+                      queryParameters: {
+                        'nid': serializeParam(
+                          getJsonField(
+                            evenementenItem,
+                            r'''$.nid''',
+                          ).toString(),
+                          ParamType.String,
+                        ),
+                        'horecaid': serializeParam(
+                          getJsonField(
+                            evenementenItem,
+                            r'''$.horecagelegenheidid''',
+                          ).toString(),
+                          ParamType.String,
+                        ),
+                      }.withoutNulls,
+                    );
+                  },
+                  child: Container(
+                    height: () {
+                      if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
+                        return 160.0;
+                      } else if (MediaQuery.sizeOf(context).width <
+                          kBreakpointMedium) {
+                        return 200.0;
+                      } else if (MediaQuery.sizeOf(context).width <
+                          kBreakpointLarge) {
+                        return 240.0;
+                      } else {
+                        return 280.0;
+                      }
+                    }(),
+                    decoration: BoxDecoration(
+                      color: Colors.white,
+                      boxShadow: [
+                        BoxShadow(
+                          blurRadius: 4.0,
+                          color: Color(0x33000000),
+                          offset: Offset(
+                            0.0,
+                            2.0,
+                          ),
+                        )
+                      ],
+                      borderRadius: BorderRadius.only(
+                        topLeft: Radius.circular(12.0),
+                        topRight: Radius.circular(12.0),
+                        bottomLeft: Radius.circular(12.0),
+                        bottomRight: Radius.circular(12.0),
+                      ),
+                    ),
+                    child: Row(
+                      mainAxisSize: MainAxisSize.max,
+                      children: [
+                        Expanded(
+                          flex: 3,
+                          child: Container(
+                            decoration: BoxDecoration(
+                              color: FlutterFlowTheme.of(context)
+                                  .secondaryBackground,
+                            ),
+                            child: Stack(
+                              children: [
+                                Align(
+                                  alignment: AlignmentDirectional(0.0, 1.0),
+                                  child: Builder(
+                                    builder: (context) {
+                                      if (getJsonField(
+                                            evenementenItem,
+                                            r'''$.logo''',
+                                          ) !=
+                                          null) {
+                                        return ClipRRect(
+                                          borderRadius:
+                                              BorderRadius.circular(8.0),
+                                          child: CachedNetworkImage(
+                                            fadeInDuration:
+                                                Duration(milliseconds: 500),
+                                            fadeOutDuration:
+                                                Duration(milliseconds: 500),
+                                            imageUrl: getJsonField(
+                                              evenementenItem,
+                                              r'''$.logo''',
+                                            ).toString(),
+                                            fit: BoxFit.fitHeight,
+                                          ),
+                                        );
+                                      } else {
+                                        return Icon(
+                                          Icons.image_not_supported,
+                                          color: FlutterFlowTheme.of(context)
+                                              .primaryText,
+                                          size: 24.0,
+                                        );
+                                      }
+                                    },
+                                  ),
+                                ),
+                                Align(
+                                  alignment: AlignmentDirectional(-0.92, 0.76),
+                                  child: Padding(
+                                    padding: EdgeInsetsDirectional.fromSTEB(
+                                        8.0, 4.0, 8.0, 4.0),
+                                    child: Container(
+                                      decoration: BoxDecoration(),
+                                      child: Builder(
+                                        builder: (context) {
+                                          final categorieitem = getJsonField(
+                                            evenementenItem,
+                                            r'''$.categorie''',
+                                          ).toList();
+                                          _model.debugGeneratorVariables[
+                                                  'categorieitem${categorieitem.length > 100 ? ' (first 100)' : ''}'] =
+                                              debugSerializeParam(
+                                            categorieitem.take(100),
+                                            ParamType.JSON,
+                                            isList: true,
+                                            link:
+                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaantabelKaartComponentOrgineelMetKaartjeerinKANWEG',
+                                            name: 'dynamic',
+                                            nullable: false,
+                                          );
+                                          debugLogWidgetClass(_model);
+
+                                          return Wrap(
+                                            spacing: 0.0,
+                                            runSpacing: 0.0,
+                                            alignment: WrapAlignment.start,
+                                            crossAxisAlignment:
+                                                WrapCrossAlignment.start,
+                                            direction: Axis.horizontal,
+                                            runAlignment: WrapAlignment.start,
+                                            verticalDirection:
+                                                VerticalDirection.down,
+                                            clipBehavior: Clip.none,
+                                            children: List.generate(
+                                                categorieitem.length,
+                                                (categorieitemIndex) {
+                                              final categorieitemItem =
+                                                  categorieitem[
+                                                      categorieitemIndex];
+                                              return Builder(builder: (_) {
+                                                return DebugFlutterFlowModelContext(
+                                                  rootModel: _model.rootModel,
+                                                  parentModelCallback: (m) {
+                                                    _model.tagCategorieComponentModels[
+                                                        'Keygdu_${categorieitemIndex}_of_${categorieitem.length}'] = m;
+                                                  },
+                                                  child:
+                                                      TagCategorieComponentWidget(
+                                                    key: Key(
+                                                        'Keygdu_${categorieitemIndex}_of_${categorieitem.length}'),
+                                                    categorieTag:
+                                                        categorieitemItem
+                                                            .toString(),
+                                                  ),
+                                                );
+                                              });
+                                            }),
+                                          );
+                                        },
+                                      ),
+                                    ),
+                                  ),
+                                ),
+                              ],
+                            ),
+                          ),
+                        ),
+                        Expanded(
+                          flex: 6,
+                          child: Padding(
+                            padding: EdgeInsetsDirectional.fromSTEB(
+                                6.0, 0.0, 0.0, 0.0),
+                            child: ClipRRect(
+                              child: Container(
+                                decoration: BoxDecoration(
+                                  color: FlutterFlowTheme.of(context)
+                                      .secondaryBackground,
+                                ),
+                                child: Align(
+                                  alignment: AlignmentDirectional(-1.0, 0.0),
+                                  child: Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    mainAxisAlignment: MainAxisAlignment.start,
+                                    crossAxisAlignment:
+                                        CrossAxisAlignment.start,
+                                    children: [
+                                      Padding(
+                                        padding: EdgeInsetsDirectional.fromSTEB(
+                                            0.0, 0.0, 0.0, 5.0),
+                                        child: AutoSizeText(
+                                          getJsonField(
+                                            evenementenItem,
+                                            r'''$.titel''',
+                                          ).toString(),
+                                          style: FlutterFlowTheme.of(context)
+                                              .bodyLarge
+                                              .override(
+                                            font: GoogleFonts.roboto(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyLarge
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyLarge
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyLarge
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyLarge
+                                                    .fontStyle,
+                                            shadows: [
+                                              Shadow(
+                                                color:
+                                                    FlutterFlowTheme.of(context)
+                                                        .secondaryText,
+                                                offset: Offset(0.0, 0.0),
+                                                blurRadius: 0.0,
+                                              )
+                                            ],
+                                          ),
+                                          overflow: TextOverflow.ellipsis,
+                                        ),
+                                      ),
+                                      Row(
+                                        mainAxisSize: MainAxisSize.max,
+                                        children: [
+                                          Padding(
+                                            padding:
+                                                EdgeInsetsDirectional.fromSTEB(
+                                                    2.0, 0.0, 4.0, 0.0),
+                                            child: Icon(
+                                              Icons.add_business_rounded,
+                                              color:
+                                                  FlutterFlowTheme.of(context)
+                                                      .primaryText,
+                                              size: 20.0,
+                                            ),
+                                          ),
+                                          Flexible(
+                                            child: Text(
+                                              getJsonField(
+                                                evenementenItem,
+                                                r'''$.horecagelegenheid''',
+                                              ).toString(),
+                                              style:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodySmall
+                                                      .override(
+                                                        font:
+                                                            GoogleFonts.roboto(
+                                                          fontWeight:
+                                                              FlutterFlowTheme.of(
+                                                                      context)
+                                                                  .bodySmall
+                                                                  .fontWeight,
+                                                          fontStyle:
+                                                              FlutterFlowTheme.of(
+                                                                      context)
+                                                                  .bodySmall
+                                                                  .fontStyle,
+                                                        ),
+                                                        letterSpacing: 0.0,
+                                                        fontWeight:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .bodySmall
+                                                                .fontWeight,
+                                                        fontStyle:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .bodySmall
+                                                                .fontStyle,
+                                                      ),
+                                            ),
+                                          ),
+                                        ],
+                                      ),
+                                      Row(
+                                        mainAxisSize: MainAxisSize.max,
+                                        children: [
+                                          Padding(
+                                            padding:
+                                                EdgeInsetsDirectional.fromSTEB(
+                                                    2.0, 0.0, 4.0, 0.0),
+                                            child: Icon(
+                                              Icons.location_on_sharp,
+                                              color:
+                                                  FlutterFlowTheme.of(context)
+                                                      .primaryText,
+                                              size: 20.0,
+                                            ),
+                                          ),
+                                          Flexible(
+                                            child: Text(
+                                              getJsonField(
+                                                evenementenItem,
+                                                r'''$.adres''',
+                                              ).toString(),
+                                              style:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodySmall
+                                                      .override(
+                                                        font:
+                                                            GoogleFonts.roboto(
+                                                          fontWeight:
+                                                              FlutterFlowTheme.of(
+                                                                      context)
+                                                                  .bodySmall
+                                                                  .fontWeight,
+                                                          fontStyle:
+                                                              FlutterFlowTheme.of(
+                                                                      context)
+                                                                  .bodySmall
+                                                                  .fontStyle,
+                                                        ),
+                                                        letterSpacing: 0.0,
+                                                        fontWeight:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .bodySmall
+                                                                .fontWeight,
+                                                        fontStyle:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .bodySmall
+                                                                .fontStyle,
+                                                      ),
+                                            ),
+                                          ),
+                                          Text(
+                                            FFLocalizations.of(context).getText(
+                                              'pvxwv62s' /* ,  */,
+                                            ),
+                                            style: FlutterFlowTheme.of(context)
+                                                .bodyMedium
+                                                .override(
+                                                  font: GoogleFonts.roboto(
+                                                    fontWeight:
+                                                        FlutterFlowTheme.of(
+                                                                context)
+                                                            .bodyMedium
+                                                            .fontWeight,
+                                                    fontStyle:
+                                                        FlutterFlowTheme.of(
+                                                                context)
+                                                            .bodyMedium
+                                                            .fontStyle,
+                                                  ),
+                                                  letterSpacing: 0.0,
+                                                  fontWeight:
+                                                      FlutterFlowTheme.of(
+                                                              context)
+                                                          .bodyMedium
+                                                          .fontWeight,
+                                                  fontStyle:
+                                                      FlutterFlowTheme.of(
+                                                              context)
+                                                          .bodyMedium
+                                                          .fontStyle,
+                                                ),
+                                          ),
+                                          Text(
+                                            getJsonField(
+                                              evenementenItem,
+                                              r'''$.plaats''',
+                                            ).toString(),
+                                            style: FlutterFlowTheme.of(context)
+                                                .bodySmall
+                                                .override(
+                                                  font: GoogleFonts.roboto(
+                                                    fontWeight:
+                                                        FlutterFlowTheme.of(
+                                                                context)
+                                                            .bodySmall
+                                                            .fontWeight,
+                                                    fontStyle:
+                                                        FlutterFlowTheme.of(
+                                                                context)
+                                                            .bodySmall
+                                                            .fontStyle,
+                                                  ),
+                                                  letterSpacing: 0.0,
+                                                  fontWeight:
+                                                      FlutterFlowTheme.of(
+                                                              context)
+                                                          .bodySmall
+                                                          .fontWeight,
+                                                  fontStyle:
+                                                      FlutterFlowTheme.of(
+                                                              context)
+                                                          .bodySmall
+                                                          .fontStyle,
+                                                ),
+                                          ),
+                                        ],
+                                      ),
+                                      Row(
+                                        mainAxisSize: MainAxisSize.max,
+                                        children: [
+                                          Padding(
+                                            padding:
+                                                EdgeInsetsDirectional.fromSTEB(
+                                                    2.0, 0.0, 4.0, 0.0),
+                                            child: Icon(
+                                              Icons.calendar_month,
+                                              color:
+                                                  FlutterFlowTheme.of(context)
+                                                      .primaryText,
+                                              size: 20.0,
+                                            ),
+                                          ),
+                                          Flexible(
+                                            child: Text(
+                                              getJsonField(
+                                                evenementenItem,
+                                                r'''$.datum''',
+                                              ).toString(),
+                                              style:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodySmall
+                                                      .override(
+                                                        font:
+                                                            GoogleFonts.roboto(
+                                                          fontWeight:
+                                                              FlutterFlowTheme.of(
+                                                                      context)
+                                                                  .bodySmall
+                                                                  .fontWeight,
+                                                          fontStyle:
+                                                              FlutterFlowTheme.of(
+                                                                      context)
+                                                                  .bodySmall
+                                                                  .fontStyle,
+                                                        ),
+                                                        letterSpacing: 0.0,
+                                                        fontWeight:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .bodySmall
+                                                                .fontWeight,
+                                                        fontStyle:
+                                                            FlutterFlowTheme.of(
+                                                                    context)
+                                                                .bodySmall
+                                                                .fontStyle,
+                                                      ),
+                                            ),
+                                          ),
+                                        ],
+                                      ),
+                                      Expanded(
+                                        child: Text(
+                                          getJsonField(
+                                            evenementenItem,
+                                            r'''$.inhoud''',
+                                          ).toString(),
+                                          textAlign: TextAlign.start,
+                                          style: FlutterFlowTheme.of(context)
+                                              .bodySmall
+                                              .override(
+                                                font: GoogleFonts.roboto(
+                                                  fontWeight:
+                                                      FlutterFlowTheme.of(
+                                                              context)
+                                                          .bodySmall
+                                                          .fontWeight,
+                                                  fontStyle:
+                                                      FlutterFlowTheme.of(
+                                                              context)
+                                                          .bodySmall
+                                                          .fontStyle,
+                                                ),
+                                                letterSpacing: 0.0,
+                                                fontWeight:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodySmall
+                                                        .fontWeight,
+                                                fontStyle:
+                                                    FlutterFlowTheme.of(context)
+                                                        .bodySmall
+                                                        .fontStyle,
+                                              ),
+                                          overflow: TextOverflow.ellipsis,
+                                        ),
+                                      ),
+                                    ],
+                                  ),
+                                ),
+                              ),
+                            ),
+                          ),
+                        ),
+                      ],
+                    ),
+                  ),
+                ),
+              );
+            },
+          ),
+        ),
+      ),
+    );
+  }
+}

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff