Forráskód Böngészése

Verse FF-export: Firebase (P1-16), bestand-upload + Stadsactiviteit aanmaken (P2-15), Mijn profiel en P2-6-werk op horeca-overzicht

Achterstallige builder-staat van meerdere sessies in één keer
binnengehaald; de vorige sessie liet deze diff bewust staan wegens de
concurrency-regel, Bob heeft nu expliciet om de commit gevraagd.

- P1-16: Firebase gekoppeld — firebase_core/crashlytics/performance in
  pubspec, initFirebase() + FlutterError.onError-hook in main.dart,
  lib/backend/firebase/, firebase/-map (functions/rules),
  google-services.json + GoogleService-Info.plist.
- P2-15: custom actions bestandUpload + stadsactiviteitCreate,
  flutter_flow/upload_data.dart, image_picker/file_picker-deps, pagina
  StadsactiviteitAanmaken + testpagina KanwegTestUpload.
- Nieuw: pagina MijnProfiel, component GoogleMapsIconButton,
  HeaderButtonsComponentCopymethartje.
- P2-6: custom action fetchAlleHorecagelegenheden + de volledige
  Page-State-laag op HorecagelegenhedenOverzicht, plus de 3
  ...Copy/Copy2/Copy2Copy-werkkopieën.
- web/index.html: Google Maps JS-SDK-script (FF-gegenereerd).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 2 hete
szülő
commit
98d46ad198
63 módosított fájl, 14914 hozzáadás és 1033 törlés
  1. 3 0
      android/app/build.gradle
  2. 48 0
      android/app/google-services.json
  3. 3 1
      android/app/src/main/AndroidManifest.xml
  4. 2 2
      android/settings.gradle
  5. 19 0
      firebase/firebase.json
  6. 90 0
      firebase/functions/api_manager.js
  7. 3 0
      firebase/functions/index.js
  8. 36 0
      firebase/functions/package.json
  9. 12 0
      firebase/storage.rules
  10. 1 0
      ios/Podfile
  11. 119 11
      ios/Runner.xcodeproj/project.pbxproj
  12. 30 0
      ios/Runner/GoogleService-Info.plist
  13. 16 2
      ios/Runner/Info.plist
  14. 148 0
      lib/backend/api_requests/api_calls.dart
  15. 18 0
      lib/backend/firebase/firebase_config.dart
  16. 62 0
      lib/components/google_maps_icon_button_model.dart
  17. 118 0
      lib/components/google_maps_icon_button_widget.dart
  18. 56 0
      lib/components/header_buttons_component_copymethartje_model.dart
  19. 267 0
      lib/components/header_buttons_component_copymethartje_widget.dart
  20. 0 1
      lib/components/header_buttons_component_model.dart
  21. 9 58
      lib/components/header_buttons_component_widget.dart
  22. 95 0
      lib/custom_code/actions/bestand_upload.dart
  23. 42 0
      lib/custom_code/actions/fetch_alle_horecagelegenheden.dart
  24. 3 0
      lib/custom_code/actions/index.dart
  25. 168 0
      lib/custom_code/actions/stadsactiviteit_create.dart
  26. 28 14
      lib/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart
  27. 82 0
      lib/favorieten/favorieten_widget.dart
  28. 92 0
      lib/flutter_flow/custom_functions.dart
  29. 145 0
      lib/flutter_flow/flutter_flow_util.dart
  30. 319 50
      lib/flutter_flow/internationalization.dart
  31. 59 1
      lib/flutter_flow/nav/nav.dart
  32. 388 0
      lib/flutter_flow/upload_data.dart
  33. 8 0
      lib/horecagelegenhedenoverzicht/event_current/event_current_model.dart
  34. 50 17
      lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart
  35. 572 11
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_model.dart
  36. 536 218
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart
  37. 693 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy/horecagelegenheden_overzicht_copy_model.dart
  38. 1644 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy/horecagelegenheden_overzicht_copy_widget.dart
  39. 801 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2/horecagelegenheden_overzicht_copy2_model.dart
  40. 1845 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2/horecagelegenheden_overzicht_copy2_widget.dart
  41. 801 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2_copy/horecagelegenheden_overzicht_copy2_copy_model.dart
  42. 1845 0
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2_copy/horecagelegenheden_overzicht_copy2_copy_widget.dart
  43. 8 1
      lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_model.dart
  44. 306 339
      lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_widget.dart
  45. 14 8
      lib/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/horecagelegenheid_event_tabel_component_copy_widget.dart
  46. 15 8
      lib/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart
  47. 11 0
      lib/index.dart
  48. 68 0
      lib/kanweg_test_upload/kanweg_test_upload_model.dart
  49. 204 0
      lib/kanweg_test_upload/kanweg_test_upload_widget.dart
  50. 1 1
      lib/login/login/login_widget.dart
  51. 9 0
      lib/main.dart
  52. 58 0
      lib/mijn_profiel/mijn_profiel_model.dart
  53. 498 0
      lib/mijn_profiel/mijn_profiel_widget.dart
  54. 225 225
      lib/shared/drawer_component/drawer_component_widget.dart
  55. 243 0
      lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_model.dart
  56. 1715 0
      lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart
  57. 2 2
      lib/uitgaanspaginas/home/home_widget.dart
  58. 15 8
      lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart
  59. 3 29
      lib/uitgaanspaginas/p_uitgaan_page/p_uitgaan_page_widget.dart
  60. 14 7
      lib/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart
  61. 202 18
      pubspec.lock
  62. 26 0
      pubspec.yaml
  63. 1 1
      web/index.html

+ 3 - 0
android/app/build.gradle

@@ -2,6 +2,9 @@ plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
+   id "com.google.gms.google-services"  // Google Services plugin
+
+   id "com.google.firebase.crashlytics"
 }
 
 def localProperties = new Properties()

+ 48 - 0
android/app/google-services.json

@@ -0,0 +1,48 @@
+{
+  "project_info": {
+    "project_number": "1095179320477",
+    "project_id": "uitgaanskrant-1qhvtd",
+    "storage_bucket": "uitgaanskrant-1qhvtd.firebasestorage.app"
+  },
+  "client": [
+    {
+      "client_info": {
+        "mobilesdk_app_id": "1:1095179320477:android:028b938796ca93ed022874",
+        "android_client_info": {
+          "package_name": "com.mycompany.uitgaanskrant"
+        }
+      },
+      "oauth_client": [],
+      "api_key": [
+        {
+          "current_key": "AIzaSyAme36DE0um981oKJxK858Gr89TWRFMseE"
+        }
+      ],
+      "services": {
+        "appinvite_service": {
+          "other_platform_oauth_client": []
+        }
+      }
+    },
+    {
+      "client_info": {
+        "mobilesdk_app_id": "1:1095179320477:android:81117eecd64498c0022874",
+        "android_client_info": {
+          "package_name": "com.uitgaanskrant.app"
+        }
+      },
+      "oauth_client": [],
+      "api_key": [
+        {
+          "current_key": "AIzaSyAme36DE0um981oKJxK858Gr89TWRFMseE"
+        }
+      ],
+      "services": {
+        "appinvite_service": {
+          "other_platform_oauth_client": []
+        }
+      }
+    }
+  ],
+  "configuration_version": "1"
+}

+ 3 - 1
android/app/src/main/AndroidManifest.xml

@@ -2,7 +2,9 @@
     package="com.uitgaanskrant.app"
     xmlns:tools="http://schemas.android.com/tools">
     <uses-permission android:name="android.permission.INTERNET"/>
-
+    <uses-permission android:name="android.permission.CAMERA"/>
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" tools:replace="android:maxSdkVersion"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" tools:replace="android:maxSdkVersion"/>
 
     <application
         android:label="Uitgaanskrant.com"

+ 2 - 2
android/settings.gradle

@@ -20,8 +20,8 @@ plugins {
     id "dev.flutter.flutter-plugin-loader" version "1.0.0"
     id "com.android.application" version "8.9.1" apply false
     id "org.jetbrains.kotlin.android" version "2.1.0" apply false
-    
-    
+    id "com.google.gms.google-services" version "4.3.8" apply false  // Google Services plugin
+    id "com.google.firebase.crashlytics" version "2.9.9" apply false
 }
 
 include ":app"

+ 19 - 0
firebase/firebase.json

@@ -0,0 +1,19 @@
+{
+  "firestore": {
+    "rules": "firestore.rules",
+    "indexes": "firestore.indexes.json"
+  },
+  "functions": [
+    {
+      "source": "functions",
+      "codebase": "functions"
+    }
+  ],
+  "storage": {
+    "rules": "storage.rules"
+  },
+  "hosting": {
+    "public": "public",
+    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
+  }
+}

+ 90 - 0
firebase/functions/api_manager.js

@@ -0,0 +1,90 @@
+const axios = require("axios").default;
+const qs = require("qs");
+
+/// Helper functions to route to the appropriate API Call.
+
+async function makeApiCall(context, data) {
+  var callName = data["callName"] || "";
+  var variables = data["variables"] || {};
+
+  const callMap = {};
+
+  if (!(callName in callMap)) {
+    return {
+      statusCode: 400,
+      error: `API Call "${callName}" not defined as private API.`,
+    };
+  }
+
+  var apiCall = callMap[callName];
+  var response = await apiCall(context, variables);
+  return response;
+}
+
+async function makeApiRequest({
+  method,
+  url,
+  headers,
+  params,
+  body,
+  returnBody,
+  isStreamingApi,
+}) {
+  return axios
+    .request({
+      method: method,
+      url: url,
+      headers: headers,
+      params: params,
+      responseType: isStreamingApi ? "stream" : "json",
+      ...(body && { data: body }),
+    })
+    .then((response) => {
+      return {
+        statusCode: response.status,
+        headers: response.headers,
+        ...(returnBody && { body: response.data }),
+        isStreamingApi: isStreamingApi,
+      };
+    })
+    .catch(function (error) {
+      return {
+        statusCode: error.response.status,
+        headers: error.response.headers,
+        ...(returnBody && { body: error.response.data }),
+        error: error.message,
+      };
+    });
+}
+
+const _unauthenticatedResponse = {
+  statusCode: 401,
+  headers: {},
+  error: "API call requires authentication",
+};
+
+function createBody({ headers, params, body, bodyType }) {
+  switch (bodyType) {
+    case "JSON":
+      headers["Content-Type"] = "application/json";
+      return body;
+    case "TEXT":
+      headers["Content-Type"] = "text/plain";
+      return body;
+    case "X_WWW_FORM_URL_ENCODED":
+      headers["Content-Type"] = "application/x-www-form-urlencoded";
+      return qs.stringify(params);
+  }
+}
+function escapeStringForJson(val) {
+  if (typeof val !== "string") {
+    return val;
+  }
+  return val
+    .replace(/[\\]/g, "\\\\")
+    .replace(/["]/g, '\\"')
+    .replace(/[\n]/g, "\\n")
+    .replace(/[\t]/g, "\\t");
+}
+
+module.exports = { makeApiCall };

+ 3 - 0
firebase/functions/index.js

@@ -0,0 +1,3 @@
+const functions = require("firebase-functions");
+const admin = require("firebase-admin");
+admin.initializeApp();

+ 36 - 0
firebase/functions/package.json

@@ -0,0 +1,36 @@
+{
+  "name": "cloud-functions",
+  "description": "Firebase Cloud Functions",
+  "dependencies": {
+    "firebase-admin": "^11.11.0",
+    "firebase-functions": "^4.4.1",
+    "braintree": "^3.6.0",
+    "@mux/mux-node": "^7.3.3",
+    "stripe": "^8.0.1",
+    "axios": "1.16.1",
+    "razorpay": "^2.8.4",
+    "qs": "^6.7.0",
+    "@onesignal/node-onesignal": "^2.0.1-beta2",
+    "@langchain/core": "^0.3.19",
+    "@langchain/langgraph": "^0.2.23",
+    "@langchain/openai": "^0.3.14",
+    "@langchain/google-genai": "^0.0.8",
+    "@langchain/anthropic": "^0.1.1"
+  },
+  "devDependencies": {
+    "eslint": "^6.8.0",
+    "eslint-plugin-promise": "^4.2.1"
+  },
+  "scripts": {
+    "lint": "./node_modules/.bin/eslint --max-warnings=0 .",
+    "serve": "firebase -P uitgaanskrant-1qhvtd emulators:start --only functions",
+    "shell": "firebase -P uitgaanskrant-1qhvtd functions:shell",
+    "start": "npm run shell",
+    "logs": "firebase -P uitgaanskrant-1qhvtd functions:log",
+    "compile": "cp ../../tsconfig.template.json ./tsconfig-compile.json && tsc --project tsconfig-compile.json"
+  },
+  "engines": {
+    "node": "20"
+  },
+  "private": true
+}

+ 12 - 0
firebase/storage.rules

@@ -0,0 +1,12 @@
+rules_version = '2';
+service firebase.storage {
+  match /b/{bucket}/o {
+    match /{allPaths=**} {
+      allow read, write: if false;
+    }
+    match /users/{userId}/{allPaths=**} {
+      allow read: if true;
+      allow write: if request.auth.uid == userId;
+    }
+  }
+}

+ 1 - 0
ios/Podfile

@@ -32,6 +32,7 @@ target 'Runner' do
   use_modular_headers!
 
   flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+  pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.13.0'
 end
 
 post_install do |installer|

+ 119 - 11
ios/Runner.xcodeproj/project.pbxproj

@@ -3,16 +3,18 @@
 	archiveVersion = 1;
 	classes = {
 	};
-	objectVersion = 46;
+	objectVersion = 50;
 	objects = {
 
 /* Begin PBXBuildFile section */
 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
 		44A671D52BC7AFBA0042F967 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 44A671D42BC7AFBA0042F967 /* PrivacyInfo.xcprivacy */; };
+		60CEEDB492F577A653BC6E45 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8285832C7E7A3262A5A897C /* Pods_Runner.framework */; };
+		6426BE1225AC0EBD0080CC2A /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6426BE1125AC0EBD0080CC2A /* GoogleService-Info.plist */; };
 		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
-		6436409A27A31CD800820AF7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6436409C27A31CD800820AF7 /* InfoPlist.strings */; };
 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+		6436409A27A31CD800820AF7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6436409C27A31CD800820AF7 /* InfoPlist.strings */; };
 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
 		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
 /* End PBXBuildFile section */
@@ -35,6 +37,9 @@
 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
 		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
 		44A671D42BC7AFBA0042F967 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
+		64E3CA8B26FC10FF0070C5E0 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
+		3DCE399542E9B8C63BEA38E6 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
+		6426BE1125AC0EBD0080CC2A /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
 		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@@ -44,9 +49,12 @@
 		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		6436409427A31CD800820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409E27A31CD500820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409327A31CDC00820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409727A31CD200820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		A9C17DEFA21738E5FBD7F54A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
+		B8285832C7E7A3262A5A897C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA9015B13AC8FF8CBD8DD673 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -54,12 +62,24 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				60CEEDB492F577A653BC6E45 /* Pods_Runner.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		33098FC5D2106DCB44CAEA79 /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				FA9015B13AC8FF8CBD8DD673 /* Pods-Runner.debug.xcconfig */,
+				A9C17DEFA21738E5FBD7F54A /* Pods-Runner.release.xcconfig */,
+				3DCE399542E9B8C63BEA38E6 /* Pods-Runner.profile.xcconfig */,
+			);
+			name = Pods;
+			path = Pods;
+			sourceTree = "<group>";
+		};
 		9740EEB11CF90186004384FC /* Flutter */ = {
 			isa = PBXGroup;
 			children = (
@@ -77,6 +97,8 @@
 				9740EEB11CF90186004384FC /* Flutter */,
 				97C146F01CF9000F007C117D /* Runner */,
 				97C146EF1CF9000F007C117D /* Products */,
+				33098FC5D2106DCB44CAEA79 /* Pods */,
+				CC79BB5F4B7E86C62E930C2C /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -91,6 +113,8 @@
 		97C146F01CF9000F007C117D /* Runner */ = {
 			isa = PBXGroup;
 			children = (
+				64E3CA8B26FC10FF0070C5E0 /* Runner.entitlements */,
+				6426BE1125AC0EBD0080CC2A /* GoogleService-Info.plist */,
 				97C146FA1CF9000F007C117D /* Main.storyboard */,
 				97C146FD1CF9000F007C117D /* Assets.xcassets */,
 				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@@ -105,6 +129,14 @@
 			path = Runner;
 			sourceTree = "<group>";
 		};
+		CC79BB5F4B7E86C62E930C2C /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				B8285832C7E7A3262A5A897C /* Pods_Runner.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -112,11 +144,14 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
 			buildPhases = (
+				3EA46EF11B42FC3BFF6A4BBC /* [CP] Check Pods Manifest.lock */,
+				9705A1C41CF9048500538489 /* Embed Frameworks */,
+				55067970987309DE09E9DE72 /* [CP] Copy Pods Resources */,
+				2838A0ADC44730F0A2303575 /* [CP] Embed Pods Frameworks */,
 				9740EEB61CF901F6004384FC /* Run Script */,
 				97C146EA1CF9000F007C117D /* Sources */,
 				97C146EB1CF9000F007C117D /* Frameworks */,
 				97C146EC1CF9000F007C117D /* Resources */,
-				9705A1C41CF9048500538489 /* Embed Frameworks */,
 				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
 			);
 			buildRules = (
@@ -171,6 +206,7 @@
 				44A671D52BC7AFBA0042F967 /* PrivacyInfo.xcprivacy in Resources */,
 				6436409A27A31CD800820AF7 /* InfoPlist.strings in Resources */,
 				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+				6426BE1225AC0EBD0080CC2A /* GoogleService-Info.plist in Resources */,
 				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
 				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
 			);
@@ -179,6 +215,23 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
+		2838A0ADC44730F0A2303575 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
 		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -193,6 +246,45 @@
 			shellPath = /bin/sh;
 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
 		};
+		3EA46EF11B42FC3BFF6A4BBC /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
+		55067970987309DE09E9DE72 /* [CP] Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Copy Pods Resources";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
 		9740EEB61CF901F6004384FC /* Run Script */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -225,8 +317,8 @@
 		6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
-				6436409427A31CD800820AF7 /* nl */,
-				6436409E27A31CD500820AF7 /* en */,
+				6436409327A31CDC00820AF7 /* nl */,
+				6436409727A31CD200820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
@@ -304,9 +396,11 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -314,7 +408,10 @@
 					"$(PROJECT_DIR)/Flutter",
 				);
 				INFOPLIST_FILE = Runner/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/Flutter",
@@ -427,7 +524,8 @@
 				MTL_ENABLE_DEBUG_INFO = NO;
 				SDKROOT = iphoneos;
 				SUPPORTED_PLATFORMS = iphoneos;
-				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALIDATE_PRODUCT = YES;
 			};
@@ -437,9 +535,11 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -447,7 +547,10 @@
 					"$(PROJECT_DIR)/Flutter",
 				);
 				INFOPLIST_FILE = Runner/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/Flutter",
@@ -465,9 +568,11 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -475,7 +580,10 @@
 					"$(PROJECT_DIR)/Flutter",
 				);
 				INFOPLIST_FILE = Runner/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/Flutter",

+ 30 - 0
ios/Runner/GoogleService-Info.plist

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>API_KEY</key>
+	<string>AIzaSyDyFpEWPaP9Oi2-dnC6inRoMWu8Tb_3das</string>
+	<key>GCM_SENDER_ID</key>
+	<string>1095179320477</string>
+	<key>PLIST_VERSION</key>
+	<string>1</string>
+	<key>BUNDLE_ID</key>
+	<string>com.uitgaanskrant.app</string>
+	<key>PROJECT_ID</key>
+	<string>uitgaanskrant-1qhvtd</string>
+	<key>STORAGE_BUCKET</key>
+	<string>uitgaanskrant-1qhvtd.firebasestorage.app</string>
+	<key>IS_ADS_ENABLED</key>
+	<false></false>
+	<key>IS_ANALYTICS_ENABLED</key>
+	<false></false>
+	<key>IS_APPINVITE_ENABLED</key>
+	<true></true>
+	<key>IS_GCM_ENABLED</key>
+	<true></true>
+	<key>IS_SIGNIN_ENABLED</key>
+	<true></true>
+	<key>GOOGLE_APP_ID</key>
+	<string>1:1095179320477:ios:4f91cf8f1761e5b2022874</string>
+</dict>
+</plist>

+ 16 - 2
ios/Runner/Info.plist

@@ -27,7 +27,18 @@
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>
-	<array>        <dict>
+	<array>
+        <dict>
+            <key>CFBundleTypeRole</key>
+            <string>Editor</string>
+            <key>CFBundleURLSchemes</key>
+            <array>
+                <!--FF_REVERSED_CLIENT_ID-->
+                
+            </array>
+        </dict>
+
+        <dict>
         <key>CFBundleTypeRole</key>
         <string>Editor</string>
         <key>CFBundleURLName</key>
@@ -47,7 +58,10 @@
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 
-
+	<key>NSCameraUsageDescription</key>
+    <string>In order to take a picture or video, this app requires permission to access the camera.</string>
+	<key>NSPhotoLibraryUsageDescription</key>
+    <string>In order to upload data, this app requires permission to access the photo library.</string>
 
 
 

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

@@ -16,6 +16,103 @@ const _kPrivateApiFunctionName = 'ffPrivateApiCall';
 class KanwegGroup {
   static String getBaseUrl() => 'https://uitgaanskrant.com';
   static Map<String, String> headers = {};
+  static CategorieenCall categorieenCall = CategorieenCall();
+  static EntreeoptiesCall entreeoptiesCall = EntreeoptiesCall();
+  static PlaatsenBijGemeenteCall plaatsenBijGemeenteCall =
+      PlaatsenBijGemeenteCall();
+}
+
+class CategorieenCall {
+  Future<ApiCallResponse> call({
+    String? sessionName = '',
+    String? sessid = '',
+  }) async {
+    final baseUrl = KanwegGroup.getBaseUrl();
+
+    return ApiManager.instance.makeApiCall(
+      callName: 'Categorieen',
+      apiUrl: '${baseUrl}/en/flutterdrup/categorieen.json',
+      callType: ApiCallType.GET,
+      headers: {
+        'Cookie': '{{session_name}}={{sessid}}',
+      },
+      params: {},
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+}
+
+class EntreeoptiesCall {
+  Future<ApiCallResponse> call({
+    String? sessionName = '',
+    String? sessid = '',
+  }) async {
+    final baseUrl = KanwegGroup.getBaseUrl();
+
+    return ApiManager.instance.makeApiCall(
+      callName: 'Entreeopties',
+      apiUrl: '${baseUrl}/en/flutterdrup/entreeopties.json',
+      callType: ApiCallType.GET,
+      headers: {
+        'Cookie': '{{session_name}}={{sessid}}',
+      },
+      params: {},
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+}
+
+class PlaatsenBijGemeenteCall {
+  Future<ApiCallResponse> call({
+    String? gemeenteid = '',
+  }) async {
+    final baseUrl = KanwegGroup.getBaseUrl();
+
+    return ApiManager.instance.makeApiCall(
+      callName: 'PlaatsenBijGemeente',
+      apiUrl: '${baseUrl}/nl/flutterdrup/plaatsen_bij_gemeente.json',
+      callType: ApiCallType.GET,
+      headers: {},
+      params: {
+        'gemeenteid': gemeenteid,
+      },
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+
+  List<String>? plaatsId(dynamic response) => (getJsonField(
+        response,
+        r'''$[:].plaatsid''',
+        true,
+      ) as List?)
+          ?.withoutNulls
+          .map((x) => castToType<String>(x))
+          .withoutNulls
+          .toList();
+  List<String>? plaatsName(dynamic response) => (getJsonField(
+        response,
+        r'''$[:].plaatsname''',
+        true,
+      ) as List?)
+          ?.withoutNulls
+          .map((x) => castToType<String>(x))
+          .withoutNulls
+          .toList();
 }
 
 /// End kanweg Group Code
@@ -899,6 +996,7 @@ class HorecagelegenheidoverzichtCall {
     String? horcat = '17967',
     String? townid = '',
     String? displayId = 'services_1',
+    int? page = 0,
   }) async {
     return ApiManager.instance.makeApiCall(
       callName: 'Horecagelegenheidoverzicht',
@@ -910,6 +1008,7 @@ class HorecagelegenheidoverzichtCall {
         'horcat': horcat,
         'townid': townid,
         'display_id': displayId,
+        'page': page,
       },
       returnBody: true,
       encodeBodyUtf8: false,
@@ -983,6 +1082,55 @@ class RequestNewPasswordCall {
       ));
 }
 
+class MijnHorecagelegenhedenCall {
+  static Future<ApiCallResponse> call({
+    String? sessionName = '',
+    String? sessid = '',
+  }) async {
+    return ApiManager.instance.makeApiCall(
+      callName: 'MijnHorecagelegenheden',
+      apiUrl:
+          'https://uitgaanskrant.com/en/flutterdrup/mijn_horecagelegenheden.json',
+      callType: ApiCallType.GET,
+      headers: {
+        'Cookie': '{{session_name}}={{sessid}}',
+        'Accept': 'application/json',
+      },
+      params: {},
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+}
+
+class MijnStadsrechtenCall {
+  static Future<ApiCallResponse> call({
+    String? sessionName = '',
+    String? sessid = '',
+  }) async {
+    return ApiManager.instance.makeApiCall(
+      callName: 'MijnStadsrechten',
+      apiUrl: 'https://uitgaanskrant.com/en/flutterdrup/mijn_stadsrechten.json',
+      callType: ApiCallType.GET,
+      headers: {
+        'Cookie': '{{session_name}}={{sessid}}',
+        'Accept': 'application/json',
+      },
+      params: {},
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+}
+
 class ApiPagingParams {
   int nextPageNumber = 0;
   int numItems = 0;

+ 18 - 0
lib/backend/firebase/firebase_config.dart

@@ -0,0 +1,18 @@
+import 'package:firebase_core/firebase_core.dart';
+import 'package:flutter/foundation.dart';
+
+Future initFirebase() async {
+  if (kIsWeb) {
+    await Firebase.initializeApp(
+        options: FirebaseOptions(
+            apiKey: "AIzaSyCloQC-px_QG64LCIeAjad_qa_VKDnMjC0",
+            authDomain: "uitgaanskrant-1qhvtd.firebaseapp.com",
+            projectId: "uitgaanskrant-1qhvtd",
+            storageBucket: "uitgaanskrant-1qhvtd.firebasestorage.app",
+            messagingSenderId: "1095179320477",
+            appId: "1:1095179320477:web:bb312e0e7c3859ef022874",
+            measurementId: "G-PJ32GHPRKQ"));
+  } else {
+    await Firebase.initializeApp();
+  }
+}

+ 62 - 0
lib/components/google_maps_icon_button_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 '/flutter_flow/custom_functions.dart' as functions;
+import 'google_maps_icon_button_widget.dart' show GoogleMapsIconButtonWidget;
+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 GoogleMapsIconButtonModel
+    extends FlutterFlowModel<GoogleMapsIconButtonWidget> {
+  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: {
+          'adres': debugSerializeParam(
+            widget?.adres,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=GoogleMapsIconButton',
+            searchReference:
+                'reference=ShcKDwoFYWRyZXMSBm9sMXdld3IECAMgAVAAWgVhZHJlcw==',
+            name: 'String',
+            nullable: true,
+          ),
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=GoogleMapsIconButton',
+            searchReference:
+                'reference=ShgKEAoGcGxhYXRzEgZkbzhtbnJyBAgDIAFQAFoGcGxhYXRz',
+            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=GoogleMapsIconButton',
+        searchReference:
+            'reference=OhRHb29nbGVNYXBzSWNvbkJ1dHRvblAAWhRHb29nbGVNYXBzSWNvbkJ1dHRvbg==',
+        widgetClassName: 'GoogleMapsIconButton',
+      );
+}

+ 118 - 0
lib/components/google_maps_icon_button_widget.dart

@@ -0,0 +1,118 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+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 'google_maps_icon_button_model.dart';
+export 'google_maps_icon_button_model.dart';
+
+/// Toont een klein Maps-icoontje; tikken opent Google Maps met het gegeven
+/// adres+plaats.
+class GoogleMapsIconButtonWidget extends StatefulWidget {
+  const GoogleMapsIconButtonWidget({
+    super.key,
+    required this.adres,
+    required this.plaats,
+  });
+
+  final String? adres;
+  final String? plaats;
+
+  @override
+  State<GoogleMapsIconButtonWidget> createState() =>
+      _GoogleMapsIconButtonWidgetState();
+}
+
+class _GoogleMapsIconButtonWidgetState extends State<GoogleMapsIconButtonWidget>
+    with RouteAware {
+  late GoogleMapsIconButtonModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => GoogleMapsIconButtonModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(GoogleMapsIconButtonWidget 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 InkWell(
+      splashColor: Colors.transparent,
+      focusColor: Colors.transparent,
+      hoverColor: Colors.transparent,
+      highlightColor: Colors.transparent,
+      onTap: () async {
+        await launchURL(
+            functions.googleMapsUrl(widget!.adres!, widget!.plaats!));
+      },
+      child: Icon(
+        Icons.location_on,
+        color: FlutterFlowTheme.of(context).primaryText,
+        size: 24.0,
+      ),
+    );
+  }
+}

+ 56 - 0
lib/components/header_buttons_component_copymethartje_model.dart

@@ -0,0 +1,56 @@
+import '/flutter_flow/flutter_flow_icon_button.dart';
+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 '/custom_code/actions/index.dart' as actions;
+import 'header_buttons_component_copymethartje_widget.dart'
+    show HeaderButtonsComponentCopymethartjeWidget;
+import 'package:aligned_tooltip/aligned_tooltip.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 HeaderButtonsComponentCopymethartjeModel
+    extends FlutterFlowModel<HeaderButtonsComponentCopymethartjeWidget> {
+  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: {
+          'showBackButton': debugSerializeParam(
+            widget?.showBackButton,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HeaderButtonsComponentCopymethartje',
+            searchReference:
+                'reference=SigKGAoOc2hvd0JhY2tCdXR0b24SBnloN3loNyoGEgR0cnVlcgQIBSABUABaDnNob3dCYWNrQnV0dG9u',
+            name: 'bool',
+            nullable: false,
+          )
+        }.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=HeaderButtonsComponentCopymethartje',
+        searchReference:
+            'reference=OiNIZWFkZXJCdXR0b25zQ29tcG9uZW50Q29weW1ldGhhcnRqZVAAWiNIZWFkZXJCdXR0b25zQ29tcG9uZW50Q29weW1ldGhhcnRqZQ==',
+        widgetClassName: 'HeaderButtonsComponentCopymethartje',
+      );
+}

+ 267 - 0
lib/components/header_buttons_component_copymethartje_widget.dart

@@ -0,0 +1,267 @@
+import '/flutter_flow/flutter_flow_icon_button.dart';
+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 '/custom_code/actions/index.dart' as actions;
+import 'package:aligned_tooltip/aligned_tooltip.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 'header_buttons_component_copymethartje_model.dart';
+export 'header_buttons_component_copymethartje_model.dart';
+
+/// Standaard header-knoppen (drawer + terug) voor herbruik op alle pagina's
+class HeaderButtonsComponentCopymethartjeWidget extends StatefulWidget {
+  const HeaderButtonsComponentCopymethartjeWidget({
+    super.key,
+    bool? showBackButton,
+  }) : this.showBackButton = showBackButton ?? true;
+
+  final bool showBackButton;
+
+  @override
+  State<HeaderButtonsComponentCopymethartjeWidget> createState() =>
+      _HeaderButtonsComponentCopymethartjeWidgetState();
+}
+
+class _HeaderButtonsComponentCopymethartjeWidgetState
+    extends State<HeaderButtonsComponentCopymethartjeWidget> with RouteAware {
+  late HeaderButtonsComponentCopymethartjeModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model =
+        createModel(context, () => HeaderButtonsComponentCopymethartjeModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HeaderButtonsComponentCopymethartjeWidget 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);
+    context.watch<FFAppState>();
+
+    return Align(
+      alignment: AlignmentDirectional(0.0, 0.0),
+      child: Row(
+        mainAxisSize: MainAxisSize.max,
+        children: [
+          AlignedTooltip(
+            content: Padding(
+              padding: EdgeInsets.all(4.0),
+              child: Text(
+                FFLocalizations.of(context).getText(
+                  'eiqzkhnd' /* Menu openen */,
+                ),
+                style: FlutterFlowTheme.of(context).bodyLarge.override(
+                      font: GoogleFonts.inter(
+                        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,
+                    ),
+              ),
+            ),
+            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.tap,
+            child: FlutterFlowIconButton(
+              borderRadius: 8.0,
+              buttonSize: 40.0,
+              fillColor: Color(0xFFB50808),
+              icon: Icon(
+                Icons.dehaze_outlined,
+                color: FlutterFlowTheme.of(context).info,
+                size: 24.0,
+              ),
+              onPressed: () async {
+                Scaffold.of(context).openDrawer();
+              },
+            ),
+          ),
+          if (widget!.showBackButton == true)
+            AlignedTooltip(
+              content: Padding(
+                padding: EdgeInsets.all(4.0),
+                child: Text(
+                  FFLocalizations.of(context).getText(
+                    'vakum2qi' /* Terug */,
+                  ),
+                  style: FlutterFlowTheme.of(context).bodyLarge.override(
+                        font: GoogleFonts.inter(
+                          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,
+                      ),
+                ),
+              ),
+              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.tap,
+              child: Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(4.0, 0.0, 0.0, 0.0),
+                child: FlutterFlowIconButton(
+                  borderColor: Color(0x00FF0000),
+                  borderRadius: 30.0,
+                  borderWidth: 1.0,
+                  buttonSize: 50.0,
+                  fillColor: Color(0xFFB50808),
+                  icon: Icon(
+                    Icons.arrow_back_outlined,
+                    color: Colors.white,
+                    size: 30.0,
+                  ),
+                  onPressed: () async {
+                    context.pop();
+                  },
+                ),
+              ),
+            ),
+          Builder(
+            builder: (context) {
+              if (FFAppState()
+                      .favorieteGemeenteIds
+                      .contains(FFAppState().gemeenteSelectId) ==
+                  true) {
+                return FlutterFlowIconButton(
+                  borderRadius: 8.0,
+                  buttonSize: 40.0,
+                  fillColor: Color(0xFFB50808),
+                  icon: Icon(
+                    Icons.favorite,
+                    color: Colors.white,
+                    size: 24.0,
+                  ),
+                  onPressed: () async {
+                    await actions.drupalRequest(
+                      'POST',
+                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
+                      FFAppState().userSessionname,
+                      FFAppState().userSessionid,
+                      FFAppState().userToken,
+                      '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                    );
+                    FFAppState().removeFromFavorieteGemeenteIds(
+                        FFAppState().gemeenteSelectId);
+                    safeSetState(() {});
+                  },
+                );
+              } else {
+                return FlutterFlowIconButton(
+                  borderRadius: 8.0,
+                  buttonSize: 40.0,
+                  fillColor: Color(0xFFB50808),
+                  icon: Icon(
+                    Icons.favorite_border,
+                    color: Colors.white,
+                    size: 24.0,
+                  ),
+                  onPressed: () async {
+                    await actions.drupalRequest(
+                      'POST',
+                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
+                      FFAppState().userSessionname,
+                      FFAppState().userSessionid,
+                      FFAppState().userToken,
+                      '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                    );
+                    FFAppState().addToFavorieteGemeenteIds(
+                        FFAppState().gemeenteSelectId);
+                    safeSetState(() {});
+                  },
+                );
+              }
+            },
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 0 - 1
lib/components/header_buttons_component_model.dart

@@ -3,7 +3,6 @@ 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 '/custom_code/actions/index.dart' as actions;
 import 'header_buttons_component_widget.dart' show HeaderButtonsComponentWidget;
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';

+ 9 - 58
lib/components/header_buttons_component_widget.dart

@@ -3,7 +3,6 @@ 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 '/custom_code/actions/index.dart' as actions;
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -98,7 +97,6 @@ class _HeaderButtonsComponentWidgetState
     DebugFlutterFlowModelContext.maybeOf(context)
         ?.parentModelCallback
         ?.call(_model);
-    context.watch<FFAppState>();
 
     return Align(
       alignment: AlignmentDirectional(0.0, 0.0),
@@ -157,7 +155,7 @@ class _HeaderButtonsComponentWidgetState
                 padding: EdgeInsets.all(4.0),
                 child: Text(
                   FFLocalizations.of(context).getText(
-                    'f8ay39rg' /* Terug */,
+                    'jc7ha6d8' /* Terug */,
                   ),
                   style: FlutterFlowTheme.of(context).bodyLarge.override(
                         font: GoogleFonts.inter(
@@ -203,61 +201,14 @@ class _HeaderButtonsComponentWidgetState
                 ),
               ),
             ),
-          Builder(
-            builder: (context) {
-              if (FFAppState()
-                      .favorieteGemeenteIds
-                      .contains(FFAppState().gemeenteSelectId) ==
-                  true) {
-                return FlutterFlowIconButton(
-                  borderRadius: 8.0,
-                  buttonSize: 40.0,
-                  fillColor: Color(0xFFB50808),
-                  icon: Icon(
-                    Icons.favorite,
-                    color: Colors.white,
-                    size: 24.0,
-                  ),
-                  onPressed: () async {
-                    await actions.drupalRequest(
-                      'POST',
-                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
-                      FFAppState().userSessionname,
-                      FFAppState().userSessionid,
-                      FFAppState().userToken,
-                      '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
-                    );
-                    FFAppState().removeFromFavorieteGemeenteIds(
-                        FFAppState().gemeenteSelectId);
-                    safeSetState(() {});
-                  },
-                );
-              } else {
-                return FlutterFlowIconButton(
-                  borderRadius: 8.0,
-                  buttonSize: 40.0,
-                  fillColor: Color(0xFFB50808),
-                  icon: Icon(
-                    Icons.favorite_border,
-                    color: Colors.white,
-                    size: 24.0,
-                  ),
-                  onPressed: () async {
-                    await actions.drupalRequest(
-                      'POST',
-                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
-                      FFAppState().userSessionname,
-                      FFAppState().userSessionid,
-                      FFAppState().userToken,
-                      '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
-                    );
-                    FFAppState().addToFavorieteGemeenteIds(
-                        FFAppState().gemeenteSelectId);
-                    safeSetState(() {});
-                  },
-                );
-              }
-            },
+          ClipRRect(
+            borderRadius: BorderRadius.circular(8.0),
+            child: Image.asset(
+              'assets/images/logo800px.png',
+              width: 200.0,
+              height: 200.0,
+              fit: BoxFit.contain,
+            ),
           ),
         ],
       ),

+ 95 - 0
lib/custom_code/actions/bestand_upload.dart

@@ -0,0 +1,95 @@
+// Automatic FlutterFlow imports
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import 'index.dart'; // Imports other custom actions
+import '/flutter_flow/custom_functions.dart'; // Imports custom functions
+import 'package:flutter/material.dart';
+// Begin custom action code
+// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
+
+import 'dart:async';
+import 'dart:convert';
+import 'package:http/http.dart' as http;
+
+Future<dynamic> bestandUpload(
+  FFUploadedFile file,
+  String uploadUrl,
+  String sessionName,
+  String sessionId,
+  String token,
+) async {
+  if (file.bytes == null || file.bytes!.isEmpty) {
+    return {'success': false, 'error': 'Geen bestand geselecteerd'};
+  }
+
+  final bestandsnaam = (file.name?.trim().isNotEmpty ?? false)
+      ? file.name!.trim()
+      : 'upload.jpg';
+  final base64Data = base64Encode(file.bytes!);
+
+  final headers = <String, String>{
+    'Accept': 'application/json',
+    'Content-Type': 'application/json',
+  };
+
+  if (sessionName.trim().isNotEmpty && sessionId.trim().isNotEmpty) {
+    headers['Cookie'] = '$sessionName=$sessionId';
+  }
+
+  if (token.trim().isNotEmpty) {
+    headers['X-CSRF-Token'] = token;
+  }
+
+  final body = jsonEncode({
+    'bestandsnaam': bestandsnaam,
+    'base64_data': base64Data,
+  });
+
+  print('========================================');
+  print('BESTAND UPLOAD');
+  print('URL         : $uploadUrl');
+  print('Bestandsnaam: $bestandsnaam');
+  print('Bytes       : ${file.bytes!.length}');
+  print('========================================');
+
+  try {
+    final response = await http
+        .post(Uri.parse(uploadUrl), headers: headers, body: body)
+        .timeout(const Duration(seconds: 30));
+
+    print('========================================');
+    print('STATUS : ${response.statusCode}');
+    print('BODY');
+    print(response.body);
+    print('========================================');
+
+    dynamic data;
+    try {
+      data = jsonDecode(response.body);
+    } catch (_) {
+      data = response.body;
+    }
+
+    if (response.statusCode >= 200 && response.statusCode < 300) {
+      return {
+        'success': true,
+        'fid': data['fid']?.toString() ?? '',
+        'url': data['url']?.toString() ?? '',
+      };
+    }
+
+    return {
+      'success': false,
+      'statusCode': response.statusCode,
+      'error':
+          data is Map ? (data['message'] ?? data.toString()) : data.toString(),
+    };
+  } on TimeoutException {
+    return {'success': false, 'error': 'Timeout'};
+  } catch (e, stack) {
+    print(e);
+    print(stack);
+    return {'success': false, 'error': e.toString()};
+  }
+}

+ 42 - 0
lib/custom_code/actions/fetch_alle_horecagelegenheden.dart

@@ -0,0 +1,42 @@
+// Automatic FlutterFlow imports
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import 'index.dart'; // Imports other custom actions
+import '/flutter_flow/custom_functions.dart'; // Imports custom functions
+import 'package:flutter/material.dart';
+// Begin custom action code
+// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
+
+import '/backend/api_requests/api_calls.dart';
+
+Future<List<dynamic>> fetchAlleHorecagelegenheden(
+  String horcat,
+  String townid,
+  String displayId,
+) async {
+  final List<dynamic> alleItems = [];
+  int page = 0;
+  const int maxPaginas = 10; // veiligheidslimiet tegen een oneindige loop
+  while (page < maxPaginas) {
+    final response = await HorecagelegenheidoverzichtCall.call(
+      horcat: horcat,
+      townid: townid,
+      displayId: displayId,
+      page: page,
+    );
+    if (!response.succeeded) {
+      break;
+    }
+    final items = response.jsonBody as List<dynamic>?;
+    if (items == null || items.isEmpty) {
+      break;
+    }
+    alleItems.addAll(items);
+    if (items.length < 100) {
+      break;
+    }
+    page++;
+  }
+  return alleItems;
+}

+ 3 - 0
lib/custom_code/actions/index.dart

@@ -1,3 +1,6 @@
 export 'drupal_login.dart' show drupalLogin;
 export 'drupal_request.dart' show drupalRequest;
 export 'get_favoriete_gemeenten.dart' show getFavorieteGemeenten;
+export 'bestand_upload.dart' show bestandUpload;
+export 'stadsactiviteit_create.dart' show stadsactiviteitCreate;
+export 'fetch_alle_horecagelegenheden.dart' show fetchAlleHorecagelegenheden;

+ 168 - 0
lib/custom_code/actions/stadsactiviteit_create.dart

@@ -0,0 +1,168 @@
+// Automatic FlutterFlow imports
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import 'index.dart'; // Imports other custom actions
+import '/flutter_flow/custom_functions.dart'; // Imports custom functions
+import 'package:flutter/material.dart';
+// Begin custom action code
+// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
+
+import 'dart:async';
+import 'dart:convert';
+import 'package:http/http.dart' as http;
+
+Future<dynamic> stadsactiviteitCreate(
+  String sessionName,
+  String sessionId,
+  String token,
+  String titel,
+  String plaatsTid,
+  String datumStart,
+  String? datumEind,
+  String? omschrijving,
+  String? organisator,
+  String? contact,
+  String? adresStraat,
+  String? adresPlaats,
+  String? adresPostcode,
+  String? entreePrijs,
+  String? toelichtingEntree,
+  List<String>? categorieTids,
+  String? websiteUrl,
+  String? logoFid,
+  List<String>? fotosFids,
+  String? entreeTid,
+) async {
+  if (titel.trim().isEmpty) {
+    return {'success': false, 'error': 'Titel is verplicht'};
+  }
+  final plaatsTidInt = int.tryParse(plaatsTid.trim());
+  if (plaatsTidInt == null) {
+    return {'success': false, 'error': 'Ongeldige plaats'};
+  }
+  if (datumStart.trim().isEmpty) {
+    return {'success': false, 'error': 'Datum is verplicht'};
+  }
+
+  final body = <String, dynamic>{
+    'titel': titel.trim(),
+    'plaats_tid': plaatsTidInt,
+    'datum_start': datumStart.trim(),
+  };
+
+  if ((datumEind ?? '').trim().isNotEmpty) {
+    body['datum_eind'] = datumEind!.trim();
+  }
+  if ((omschrijving ?? '').trim().isNotEmpty) {
+    body['omschrijving'] = omschrijving!.trim();
+  }
+  if ((organisator ?? '').trim().isNotEmpty) {
+    body['organisator'] = organisator!.trim();
+  }
+  if ((contact ?? '').trim().isNotEmpty) {
+    body['contact'] = contact!.trim();
+  }
+  if ((adresStraat ?? '').trim().isNotEmpty ||
+      (adresPlaats ?? '').trim().isNotEmpty ||
+      (adresPostcode ?? '').trim().isNotEmpty) {
+    body['adres'] = {
+      if ((adresStraat ?? '').trim().isNotEmpty)
+        'thoroughfare': adresStraat!.trim(),
+      if ((adresPlaats ?? '').trim().isNotEmpty)
+        'locality': adresPlaats!.trim(),
+      if ((adresPostcode ?? '').trim().isNotEmpty)
+        'postal_code': adresPostcode!.trim(),
+      'country': 'NL',
+    };
+  }
+  if ((entreePrijs ?? '').trim().isNotEmpty) {
+    body['entree_prijs'] = entreePrijs!.trim();
+  }
+  if ((toelichtingEntree ?? '').trim().isNotEmpty) {
+    body['toelichting_entree'] = toelichtingEntree!.trim();
+  }
+  if (categorieTids != null && categorieTids.isNotEmpty) {
+    final tids = categorieTids
+        .map((e) => int.tryParse(e.trim()))
+        .whereType<int>()
+        .toList();
+    if (tids.isNotEmpty) body['categorie_tids'] = tids;
+  }
+  if ((websiteUrl ?? '').trim().isNotEmpty) {
+    body['website_url'] = websiteUrl!.trim();
+  }
+  if ((logoFid ?? '').trim().isNotEmpty) {
+    final fid = int.tryParse(logoFid!.trim());
+    if (fid != null) body['logo_fid'] = fid;
+  }
+  if (fotosFids != null && fotosFids.isNotEmpty) {
+    final fids =
+        fotosFids.map((e) => int.tryParse(e.trim())).whereType<int>().toList();
+    if (fids.isNotEmpty) body['fotos_fids'] = fids;
+  }
+  if ((entreeTid ?? '').trim().isNotEmpty) {
+    final tid = int.tryParse(entreeTid!.trim());
+    if (tid != null) body['entree_tid'] = tid;
+  }
+
+  final headers = <String, String>{
+    'Accept': 'application/json',
+    'Content-Type': 'application/json',
+  };
+  if (sessionName.trim().isNotEmpty && sessionId.trim().isNotEmpty) {
+    headers['Cookie'] = '$sessionName=$sessionId';
+  }
+  if (token.trim().isNotEmpty) {
+    headers['X-CSRF-Token'] = token;
+  }
+
+  final url =
+      'https://uitgaanskrant.com/en/flutterdrup/stadsactiviteiten/create.json';
+
+  print('========================================');
+  print('STADSACTIVITEIT CREATE');
+  print('URL  : $url');
+  print('BODY : ${jsonEncode(body)}');
+  print('========================================');
+
+  try {
+    final response = await http
+        .post(Uri.parse(url), headers: headers, body: jsonEncode(body))
+        .timeout(const Duration(seconds: 30));
+
+    print('========================================');
+    print('STATUS : ${response.statusCode}');
+    print('BODY');
+    print(response.body);
+    print('========================================');
+
+    dynamic data;
+    try {
+      data = jsonDecode(response.body);
+    } catch (_) {
+      data = response.body;
+    }
+
+    if (response.statusCode >= 200 && response.statusCode < 300) {
+      return {
+        'success': true,
+        'nid': data is Map ? (data['nid']?.toString() ?? '') : '',
+        'status': data is Map ? (data['status']?.toString() ?? '') : '',
+      };
+    }
+
+    return {
+      'success': false,
+      'statusCode': response.statusCode,
+      'error':
+          data is Map ? (data['message'] ?? data.toString()) : data.toString(),
+    };
+  } on TimeoutException {
+    return {'success': false, 'error': 'Timeout'};
+  } catch (e, stack) {
+    print(e);
+    print(stack);
+    return {'success': false, 'error': e.toString()};
+  }
+}

+ 28 - 14
lib/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart

@@ -319,13 +319,20 @@ class _EvenementHorecagelegenheidWidgetState
                             return ClipRRect(
                               borderRadius: BorderRadius.circular(8.0),
                               child: OctoImage(
-                                placeholderBuilder: (_) => SizedBox.expand(
-                                  child: Image(
-                                    image: BlurHashImage(
-                                        'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                    fit: BoxFit.cover,
-                                  ),
-                                ),
+                                placeholderBuilder: (_) {
+                                  final blurHash =
+                                      'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                  if (!validateBlurhash(blurHash)) {
+                                    return const SizedBox.shrink();
+                                  }
+                                  return SizedBox.expand(
+                                    child: Image(
+                                      image: BlurHashImage(blurHash),
+                                      fit: BoxFit.cover,
+                                    ),
+                                  );
+                                },
                                 image: CachedNetworkImageProvider(
                                   fotoosItem,
                                 ),
@@ -484,13 +491,20 @@ class _EvenementHorecagelegenheidWidgetState
                               ClipRRect(
                                 borderRadius: BorderRadius.circular(8.0),
                                 child: OctoImage(
-                                  placeholderBuilder: (_) => SizedBox.expand(
-                                    child: Image(
-                                      image: BlurHashImage(
-                                          'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                      fit: BoxFit.cover,
-                                    ),
-                                  ),
+                                  placeholderBuilder: (_) {
+                                    final blurHash =
+                                        'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                    if (!validateBlurhash(blurHash)) {
+                                      return const SizedBox.shrink();
+                                    }
+                                    return SizedBox.expand(
+                                      child: Image(
+                                        image: BlurHashImage(blurHash),
+                                        fit: BoxFit.cover,
+                                      ),
+                                    );
+                                  },
                                   image: CachedNetworkImageProvider(
                                     valueOrDefault<String>(
                                       EstablishmentInfoCall.establshmentLogo(

+ 82 - 0
lib/favorieten/favorieten_widget.dart

@@ -402,6 +402,30 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                   },
                                 ),
                               ),
+                              Text(
+                                FFLocalizations.of(context).getText(
+                                  'wmho8j7h' /* Hello World */,
+                                ),
+                                style: FlutterFlowTheme.of(context)
+                                    .bodyMedium
+                                    .override(
+                                      font: GoogleFonts.inter(
+                                        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,
+                                    ),
+                              ),
                             ],
                           ),
                           Column(
@@ -798,6 +822,64 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                   ),
                                 ),
                               ),
+                              InkWell(
+                                splashColor: Colors.transparent,
+                                focusColor: Colors.transparent,
+                                hoverColor: Colors.transparent,
+                                highlightColor: Colors.transparent,
+                                onTap: () async {
+                                  context
+                                      .pushNamed(MijnProfielWidget.routeName);
+                                },
+                                child: Material(
+                                  color: Colors.transparent,
+                                  child: ListTile(
+                                    title: Text(
+                                      FFLocalizations.of(context).getText(
+                                        'pdzmzb1p' /* Mijn profiel */,
+                                      ),
+                                      style: FlutterFlowTheme.of(context)
+                                          .titleLarge
+                                          .override(
+                                            font: GoogleFonts.interTight(
+                                              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,
+                                          ),
+                                    ),
+                                    trailing: Icon(
+                                      Icons.arrow_forward_ios_rounded,
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryText,
+                                      size: 24.0,
+                                    ),
+                                    tileColor: FlutterFlowTheme.of(context)
+                                        .secondaryBackground,
+                                    dense: false,
+                                    contentPadding:
+                                        EdgeInsetsDirectional.fromSTEB(
+                                            12.0, 0.0, 12.0, 0.0),
+                                    shape: RoundedRectangleBorder(
+                                      borderRadius: BorderRadius.circular(8.0),
+                                    ),
+                                  ),
+                                ),
+                              ),
                               InkWell(
                                 splashColor: Colors.transparent,
                                 focusColor: Colors.transparent,

+ 92 - 0
lib/flutter_flow/custom_functions.dart

@@ -106,3 +106,95 @@ String? gemeenteNaamById(
 String? favorietenBodyNode(String nid) {
   return '{"entity_id": ' + nid + ', "entity_type": "node"}';
 }
+
+String googleMapsUrl(
+  String adres,
+  String plaats,
+) {
+  return 'https://www.google.com/maps/search/?api=1&query=' +
+      Uri.encodeComponent('$adres, $plaats');
+}
+
+List<dynamic> filterHorecagelegenheden(
+  List<dynamic> items,
+  String zoekterm,
+  String? categorieFilter,
+  String titelPad,
+  String categoriePad,
+) {
+  final titelKey =
+      titelPad.startsWith(r'$.') ? titelPad.substring(2) : titelPad;
+  final categorieKey =
+      categoriePad.startsWith(r'$.') ? categoriePad.substring(2) : categoriePad;
+
+  final term = zoekterm
+      .trim()
+      .toLowerCase()
+      .replaceAll('à', 'a')
+      .replaceAll('á', 'a')
+      .replaceAll('ä', 'a')
+      .replaceAll('â', 'a')
+      .replaceAll('è', 'e')
+      .replaceAll('é', 'e')
+      .replaceAll('ë', 'e')
+      .replaceAll('ê', 'e')
+      .replaceAll('ì', 'i')
+      .replaceAll('í', 'i')
+      .replaceAll('ï', 'i')
+      .replaceAll('î', 'i')
+      .replaceAll('ò', 'o')
+      .replaceAll('ó', 'o')
+      .replaceAll('ö', 'o')
+      .replaceAll('ô', 'o')
+      .replaceAll('ù', 'u')
+      .replaceAll('ú', 'u')
+      .replaceAll('ü', 'u')
+      .replaceAll('û', 'u')
+      .replaceAll('ñ', 'n')
+      .replaceAll('ç', 'c');
+  final catFilter = categorieFilter?.trim();
+
+  return items.where((item) {
+    final map = item is Map ? item : null;
+    if (term.isNotEmpty) {
+      final titelRaw = map?[titelKey]?.toString() ?? '';
+      final titel = titelRaw
+          .toLowerCase()
+          .replaceAll('à', 'a')
+          .replaceAll('á', 'a')
+          .replaceAll('ä', 'a')
+          .replaceAll('â', 'a')
+          .replaceAll('è', 'e')
+          .replaceAll('é', 'e')
+          .replaceAll('ë', 'e')
+          .replaceAll('ê', 'e')
+          .replaceAll('ì', 'i')
+          .replaceAll('í', 'i')
+          .replaceAll('ï', 'i')
+          .replaceAll('î', 'i')
+          .replaceAll('ò', 'o')
+          .replaceAll('ó', 'o')
+          .replaceAll('ö', 'o')
+          .replaceAll('ô', 'o')
+          .replaceAll('ù', 'u')
+          .replaceAll('ú', 'u')
+          .replaceAll('ü', 'u')
+          .replaceAll('û', 'u')
+          .replaceAll('ñ', 'n')
+          .replaceAll('ç', 'c');
+      if (!titel.contains(term)) {
+        return false;
+      }
+    }
+    if (catFilter != null && catFilter.isNotEmpty) {
+      final categorie = map?[categorieKey];
+      final lijst = (categorie is List) ? categorie : <dynamic>[];
+      final match = lijst
+          .any((c) => c.toString().toLowerCase() == catFilter.toLowerCase());
+      if (!match) {
+        return false;
+      }
+    }
+    return true;
+  }).toList();
+}

+ 145 - 0
lib/flutter_flow/flutter_flow_util.dart

@@ -58,6 +58,151 @@ String dateTimeFormat(String format, DateTime? dateTime, {String? locale}) {
   return DateFormat(format, locale).format(dateTime);
 }
 
+Theme wrapInMaterialDatePickerTheme(
+  BuildContext context,
+  Widget child, {
+  required Color headerBackgroundColor,
+  required Color headerForegroundColor,
+  required TextStyle headerTextStyle,
+  required Color pickerBackgroundColor,
+  required Color pickerForegroundColor,
+  required Color selectedDateTimeBackgroundColor,
+  required Color selectedDateTimeForegroundColor,
+  required Color actionButtonForegroundColor,
+  required double iconSize,
+}) {
+  final baseTheme = Theme.of(context);
+  final dateTimeMaterialStateForegroundColor =
+      WidgetStateProperty.resolveWith((states) {
+    if (states.contains(WidgetState.disabled)) {
+      return pickerForegroundColor.applyAlpha(0.60);
+    }
+    if (states.contains(WidgetState.selected)) {
+      return selectedDateTimeForegroundColor;
+    }
+    if (states.isEmpty) {
+      return pickerForegroundColor;
+    }
+    return null;
+  });
+
+  final dateTimeMaterialStateBackgroundColor =
+      WidgetStateProperty.resolveWith((states) {
+    if (states.contains(WidgetState.selected)) {
+      return selectedDateTimeBackgroundColor;
+    }
+    return null;
+  });
+
+  return Theme(
+    data: baseTheme.copyWith(
+      colorScheme: baseTheme.colorScheme.copyWith(
+        onSurface: pickerForegroundColor,
+      ),
+      disabledColor: pickerForegroundColor.applyAlpha(0.3),
+      textTheme: baseTheme.textTheme.copyWith(
+        headlineSmall: headerTextStyle,
+        headlineMedium: headerTextStyle,
+      ),
+      iconTheme: baseTheme.iconTheme.copyWith(
+        size: iconSize,
+      ),
+      textButtonTheme: TextButtonThemeData(
+        style: ButtonStyle(
+            foregroundColor: WidgetStatePropertyAll(
+              actionButtonForegroundColor,
+            ),
+            overlayColor: WidgetStateProperty.resolveWith((states) {
+              if (states.contains(WidgetState.hovered)) {
+                return actionButtonForegroundColor.applyAlpha(0.04);
+              }
+              if (states.contains(WidgetState.focused) ||
+                  states.contains(WidgetState.pressed)) {
+                return actionButtonForegroundColor.applyAlpha(0.12);
+              }
+              return null;
+            })),
+      ),
+      datePickerTheme: DatePickerThemeData(
+        backgroundColor: pickerBackgroundColor,
+        headerBackgroundColor: headerBackgroundColor,
+        headerForegroundColor: headerForegroundColor,
+        weekdayStyle: baseTheme.textTheme.labelMedium!.copyWith(
+          color: pickerForegroundColor,
+        ),
+        dayBackgroundColor: dateTimeMaterialStateBackgroundColor,
+        todayBackgroundColor: dateTimeMaterialStateBackgroundColor,
+        yearBackgroundColor: dateTimeMaterialStateBackgroundColor,
+        dayForegroundColor: dateTimeMaterialStateForegroundColor,
+        todayForegroundColor: dateTimeMaterialStateForegroundColor,
+        yearForegroundColor: dateTimeMaterialStateForegroundColor,
+      ),
+    ),
+    child: child,
+  );
+}
+
+Theme wrapInMaterialTimePickerTheme(
+  BuildContext context,
+  Widget child, {
+  required Color headerBackgroundColor,
+  required Color headerForegroundColor,
+  required TextStyle headerTextStyle,
+  required Color pickerBackgroundColor,
+  required Color pickerForegroundColor,
+  required Color selectedDateTimeBackgroundColor,
+  required Color selectedDateTimeForegroundColor,
+  required Color actionButtonForegroundColor,
+  required double iconSize,
+}) {
+  final baseTheme = Theme.of(context);
+  return Theme(
+    data: baseTheme.copyWith(
+      iconTheme: baseTheme.iconTheme.copyWith(
+        size: iconSize,
+      ),
+      textButtonTheme: TextButtonThemeData(
+        style: ButtonStyle(
+            foregroundColor: WidgetStatePropertyAll(
+              actionButtonForegroundColor,
+            ),
+            overlayColor: WidgetStateProperty.resolveWith((states) {
+              if (states.contains(WidgetState.hovered)) {
+                return actionButtonForegroundColor.applyAlpha(0.04);
+              }
+              if (states.contains(WidgetState.focused) ||
+                  states.contains(WidgetState.pressed)) {
+                return actionButtonForegroundColor.applyAlpha(0.12);
+              }
+              return null;
+            })),
+      ),
+      timePickerTheme: baseTheme.timePickerTheme.copyWith(
+        backgroundColor: pickerBackgroundColor,
+        hourMinuteTextColor: pickerForegroundColor,
+        dialHandColor: selectedDateTimeBackgroundColor,
+        dialTextColor: WidgetStateColor.resolveWith((states) =>
+            states.contains(WidgetState.selected)
+                ? selectedDateTimeForegroundColor
+                : pickerForegroundColor),
+        dayPeriodBorderSide: BorderSide(
+          color: pickerForegroundColor,
+        ),
+        dayPeriodTextColor: WidgetStateColor.resolveWith((states) =>
+            states.contains(WidgetState.selected)
+                ? selectedDateTimeForegroundColor
+                : pickerForegroundColor),
+        dayPeriodColor: WidgetStateColor.resolveWith((states) =>
+            states.contains(WidgetState.selected)
+                ? selectedDateTimeBackgroundColor
+                : Colors.transparent),
+        entryModeIconColor: pickerForegroundColor,
+      ),
+    ),
+    child: child,
+  );
+}
+
 Future launchURL(String url) async {
   var uri = Uri.parse(url);
   try {

+ 319 - 50
lib/flutter_flow/internationalization.dart

@@ -158,7 +158,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Wachtwoord',
       'en': 'Password',
     },
-    'ahiklq0c': {
+    'n3cyffso': {
       'nl': 'Wachtwoord tonen/verbergen',
       'en': 'Favorite',
     },
@@ -177,7 +177,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
   },
   // horecagelegenheidCurrent
   {
-    'kjqv6ycx': {
+    'gh9ciiqo': {
       'nl': 'Favoriet',
       'en': 'Favorite',
     },
@@ -256,7 +256,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
   },
   // EventCurrent
   {
-    'z63o5kzf': {
+    '2cyobro5': {
       'nl': 'Delen',
       'en': 'Favorite',
     },
@@ -275,10 +275,18 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Activiteiten',
       'en': 'Activiteiten',
     },
+    'zk6al0vg': {
+      'nl': 'TextField',
+      'en': '',
+    },
     'od4c0ph1': {
       'nl': 'Cultuur',
       'en': 'Cultuur',
     },
+    '4hoz3fa1': {
+      'nl': 'TextField',
+      'en': '',
+    },
     'i9cdclh1': {
       'nl': 'Eetgelegenheden',
       'en': 'Eetgelegenheden',
@@ -295,6 +303,10 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Verhuur, catering',
       'en': 'Verhuur, catering',
     },
+    'w8fjvz5a': {
+      'nl': 'TextField',
+      'en': '',
+    },
     '9eldyvgz': {
       'nl': 'Home',
       'en': '',
@@ -401,9 +413,9 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Verstuur',
       'en': '',
     },
-    's7n2u93z': {
+    'z2dmd9xi': {
       'nl': 'Home',
-      'en': 'Home',
+      'en': '',
     },
   },
   // favorieten
@@ -412,6 +424,10 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Persoonlijke agenda',
       'en': '',
     },
+    'wmho8j7h': {
+      'nl': 'Hello World',
+      'en': '',
+    },
     '9wq117bv': {
       'nl': 'Favoriete gemeenten',
       'en': '',
@@ -440,6 +456,14 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': '',
       'en': '',
     },
+    'pdzmzb1p': {
+      'nl': 'Mijn profiel',
+      'en': '',
+    },
+    't7deo6w1': {
+      'nl': '',
+      'en': '',
+    },
     'ogz7q3xk': {
       'nl': 'Wachtwoord wijzigen',
       'en': '',
@@ -456,14 +480,14 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': '',
       'en': '',
     },
-    'xyig2ny4': {
+    'vpqh55o7': {
       'nl': 'Home',
       'en': 'Home',
     },
   },
   // kanweg
   {
-    '3f7lzegf': {
+    'z4up9ypg': {
       'nl': 'Home',
       'en': 'Home',
     },
@@ -507,6 +531,240 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': 'Home',
     },
   },
+  // kanwegTestUpload
+  {
+    'mw7suah8': {
+      'nl': 'Test Upload',
+      'en': '',
+    },
+    's7n2u93z': {
+      'nl': 'Home',
+      'en': 'Home',
+    },
+  },
+  // mijnProfiel
+  {
+    'aiokgolu': {
+      'nl': 'Mijn horecagelegenheden',
+      'en': '',
+    },
+    '8a7ti6zc': {
+      'nl': '+ Voeg toe',
+      'en': '',
+    },
+    '5iw84w8w': {
+      'nl': 'Mijn redactierechten',
+      'en': '',
+    },
+    'h3caw9re': {
+      'nl': '+ Voeg toe',
+      'en': '',
+    },
+    'xyig2ny4': {
+      'nl': 'Home',
+      'en': 'Home',
+    },
+  },
+  // stadsactiviteitAanmaken
+  {
+    'xorq08j5': {
+      'nl': 'Titel',
+      'en': '',
+    },
+    'jwgx4el8': {
+      'nl': 'Titel activiteit',
+      'en': 'Titel activiteit',
+    },
+    'dfa8vusy': {
+      'nl': 'Datum',
+      'en': 'Datum',
+    },
+    '7vogkwoh': {
+      'nl': 'Datum',
+      'en': 'Datum',
+    },
+    '71z3uvd8': {
+      'nl': 'Datum eind',
+      'en': 'Datum eind',
+    },
+    '1k52hayg': {
+      'nl': 'Datum eind',
+      'en': 'Datum eind',
+    },
+    'vc73ugaq': {
+      'nl': 'Omschrijving',
+      'en': 'Description',
+    },
+    'k4jw1fl6': {
+      'nl': 'Omschrijving activiteit',
+      'en': 'Omschrijving activiteit',
+    },
+    '7dy1oyjr': {
+      'nl': 'Organisator',
+      'en': 'Organisator',
+    },
+    'nxfif83l': {
+      'nl': 'Organisator van de activiteit',
+      'en': 'Organisator van de activiteit',
+    },
+    '06lh8r3a': {
+      'nl': 'Contact',
+      'en': '',
+    },
+    'p3rwq60m': {
+      'nl': 'Contact email/telefoon',
+      'en': 'Contact email/telefoon',
+    },
+    '5ehouxlk': {
+      'nl': 'Adres',
+      'en': 'Adres',
+    },
+    '4czd99zl': {
+      'nl': 'Adres',
+      'en': 'Adres',
+    },
+    'oo7z1mp8': {
+      'nl': 'Postcode',
+      'en': '',
+    },
+    'j9h65a88': {
+      'nl': 'Postcode',
+      'en': 'Postcode',
+    },
+    '825wzmk4': {
+      'nl': 'Plaats',
+      'en': 'Plaats',
+    },
+    'np527mil': {
+      'nl': 'Plaats activiteit',
+      'en': 'Plaats activiteit',
+    },
+    'pftju36e': {
+      'nl': 'Entreeprijs',
+      'en': 'Entreeprijs',
+    },
+    'fyltb801': {
+      'nl': 'Entreeprijs',
+      'en': 'Entreeprijs',
+    },
+    '0brx7n79': {
+      'nl': 'Toelichting Entree',
+      'en': 'Toelichting Entree',
+    },
+    'i66ori1d': {
+      'nl': 'WebsiteURL',
+      'en': '',
+    },
+    'bhydpd6h': {
+      'nl': 'Website van de activiteit',
+      'en': 'Website van de activiteit',
+    },
+    '3f7lzegf': {
+      'nl': 'Home',
+      'en': 'Home',
+    },
+  },
+  // HorecagelegenhedenOverzichtCopy
+  {
+    '9h6jfdei': {
+      'nl': 'Activiteiten',
+      'en': 'Activiteiten',
+    },
+    'pnygpwks': {
+      'nl': 'Cultuur',
+      'en': 'Cultuur',
+    },
+    'c7r33qpa': {
+      'nl': 'Eetgelegenheden',
+      'en': 'Eetgelegenheden',
+    },
+    '9q9aqxds': {
+      'nl': 'Overnachten',
+      'en': 'Overnachten',
+    },
+    'o3glxp3t': {
+      'nl': 'Uitgaan',
+      'en': 'Uitgaan',
+    },
+    'xxlt4qbt': {
+      'nl': 'Verhuur, catering',
+      'en': 'Verhuur, catering',
+    },
+    '70csxto9': {
+      'nl': 'Home',
+      'en': '',
+    },
+  },
+  // HorecagelegenhedenOverzichtCopy2
+  {
+    'v7zmfnlu': {
+      'nl': 'Activiteiten',
+      'en': 'Activiteiten',
+    },
+    'sisrkw2v': {
+      'nl': 'TextField',
+      'en': '',
+    },
+    '0wd3zzb2': {
+      'nl': 'Cultuur',
+      'en': 'Cultuur',
+    },
+    '06l3k6we': {
+      'nl': 'Eetgelegenheden',
+      'en': 'Eetgelegenheden',
+    },
+    '4vohbdey': {
+      'nl': 'Overnachten',
+      'en': 'Overnachten',
+    },
+    'oo16hec0': {
+      'nl': 'Uitgaan',
+      'en': 'Uitgaan',
+    },
+    'wuihpc8q': {
+      'nl': 'Verhuur, catering',
+      'en': 'Verhuur, catering',
+    },
+    'ycwxgazh': {
+      'nl': 'Home',
+      'en': '',
+    },
+  },
+  // HorecagelegenhedenOverzichtCopy2Copy
+  {
+    'fyu5pfrs': {
+      'nl': 'Activiteiten',
+      'en': 'Activiteiten',
+    },
+    'll4dsny3': {
+      'nl': 'TextField',
+      'en': '',
+    },
+    'y63yqa75': {
+      'nl': 'Cultuur',
+      'en': 'Cultuur',
+    },
+    '14zkktka': {
+      'nl': 'Eetgelegenheden',
+      'en': 'Eetgelegenheden',
+    },
+    'tv5mypx1': {
+      'nl': 'Overnachten',
+      'en': 'Overnachten',
+    },
+    '71mvhbto': {
+      'nl': 'Uitgaan',
+      'en': 'Uitgaan',
+    },
+    'fhszzuy8': {
+      'nl': 'Verhuur, catering',
+      'en': 'Verhuur, catering',
+    },
+    'cg49avk4': {
+      'nl': 'Home',
+      'en': '',
+    },
+  },
   // SelectStateDropDownComponent
   {
     'duloakue': {
@@ -584,123 +842,123 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': '',
       'en': '',
     },
-    '4u9vsobq': {
-      'nl': 'Provincie',
-      'en': 'Provincie',
+    'qoszyexg': {
+      'nl': 'Gemeente',
+      'en': 'Gemeente',
     },
-    'scozdjf2': {
+    'dpn5svdo': {
       'nl': '',
       'en': '',
     },
-    '8luezemw': {
+    'f2xucb65': {
       'nl': 'Uitgaan',
       'en': 'Uitgaan',
     },
-    'f2n2zs5x': {
+    '0rcz22fx': {
       'nl': '',
       'en': '',
     },
-    'rb8etfad': {
+    'aco5j6v5': {
       'nl': 'Activiteiten',
       'en': 'Activiteiten',
     },
-    '9hgqcibm': {
+    'mkcafscy': {
       'nl': '',
       'en': '',
     },
-    'l4upasn8': {
+    'u6kma8y1': {
       'nl': 'Cultuur',
       'en': 'Cultuur',
     },
-    '5unk9wxy': {
+    '6hdsapmc': {
       'nl': '',
       'en': '',
     },
-    '0zbg44er': {
+    'hpm7mxhj': {
       'nl': 'Films',
       'en': 'Films',
     },
-    'gy0c8dfg': {
+    'wfmu8ldt': {
       'nl': '',
       'en': '',
     },
-    'zguubv8h': {
+    'clxcjmfh': {
       'nl': 'Jeugd',
       'en': 'Jeugd',
     },
-    'bmdhe1w3': {
+    'fuiykay7': {
       'nl': '',
       'en': '',
     },
-    'mqf3caeh': {
+    'mk70rozo': {
       'nl': 'Horeca',
       'en': 'Horeca',
     },
-    'ypp8cg7h': {
+    'kknwn00s': {
       'nl': '',
       'en': '',
     },
-    'qoszyexg': {
-      'nl': 'Gemeente',
-      'en': 'Gemeente',
+    't46xiboh': {
+      'nl': 'Thuis bezorgen',
+      'en': 'Thuis bezorgen',
     },
-    'dpn5svdo': {
+    '18zxga44': {
       'nl': '',
       'en': '',
     },
-    'f2xucb65': {
+    '4u9vsobq': {
+      'nl': 'Provincie',
+      'en': 'Provincie',
+    },
+    'scozdjf2': {
+      'nl': '',
+      'en': '',
+    },
+    '8luezemw': {
       'nl': 'Uitgaan',
       'en': 'Uitgaan',
     },
-    '0rcz22fx': {
+    'f2n2zs5x': {
       'nl': '',
       'en': '',
     },
-    'aco5j6v5': {
+    'rb8etfad': {
       'nl': 'Activiteiten',
       'en': 'Activiteiten',
     },
-    'mkcafscy': {
+    '9hgqcibm': {
       'nl': '',
       'en': '',
     },
-    'u6kma8y1': {
+    'l4upasn8': {
       'nl': 'Cultuur',
       'en': 'Cultuur',
     },
-    '6hdsapmc': {
+    '5unk9wxy': {
       'nl': '',
       'en': '',
     },
-    'hpm7mxhj': {
+    '0zbg44er': {
       'nl': 'Films',
       'en': 'Films',
     },
-    'wfmu8ldt': {
+    'gy0c8dfg': {
       'nl': '',
       'en': '',
     },
-    'clxcjmfh': {
+    'zguubv8h': {
       'nl': 'Jeugd',
       'en': 'Jeugd',
     },
-    'fuiykay7': {
+    'bmdhe1w3': {
       'nl': '',
       'en': '',
     },
-    'mk70rozo': {
+    'mqf3caeh': {
       'nl': 'Horeca',
       'en': 'Horeca',
     },
-    'kknwn00s': {
-      'nl': '',
-      'en': '',
-    },
-    't46xiboh': {
-      'nl': 'Thuis bezorgen',
-      'en': 'Thuis bezorgen',
-    },
-    '18zxga44': {
+    'ypp8cg7h': {
       'nl': '',
       'en': '',
     },
@@ -708,7 +966,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Mijn Account',
       'en': 'Mijn Account',
     },
-    'vmbtb6ah': {
+    'vnwx710y': {
       'nl': 'Terug',
       'en': 'Favorite',
     },
@@ -788,7 +1046,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
   },
   // HorecagelegenheidoverzichtKaart
   {
-    'ujd0p09x': {
+    'y7slo4b4': {
       'nl': 'MessageFavoriet...',
       'en': 'Favorite',
     },
@@ -807,7 +1065,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Menu openen',
       'en': '',
     },
-    'f8ay39rg': {
+    'jc7ha6d8': {
       'nl': 'Terug',
       'en': 'Favorite',
     },
@@ -888,6 +1146,17 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
   },
+  // HeaderButtonsComponentCopymethartje
+  {
+    'eiqzkhnd': {
+      'nl': 'Menu openen',
+      'en': '',
+    },
+    'vakum2qi': {
+      'nl': 'Terug',
+      'en': 'Favorite',
+    },
+  },
   // Miscellaneous
   {
     '95e9zpp5': {

+ 59 - 1
lib/flutter_flow/nav/nav.dart

@@ -54,7 +54,19 @@ const debugRouteLinkMap = {
   '/kanweg':
       'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanweg',
   '/favorietenCopy':
-      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorietenCopy'
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorietenCopy',
+  '/kanwegTestUpload':
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwegTestUpload',
+  '/mijnProfiel':
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+  '/stadsactiviteitAanmaken':
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+  '/horecagelegenhedenOverzichtCopy':
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+  '/horecagelegenhedenOverzichtCopy2':
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+  '/horecagelegenhedenOverzichtCopy2Copy':
+      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy'
 };
 
 class AppStateNotifier extends ChangeNotifier {
@@ -240,6 +252,52 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
           name: FavorietenCopyWidget.routeName,
           path: FavorietenCopyWidget.routePath,
           builder: (context, params) => FavorietenCopyWidget(),
+        ),
+        FFRoute(
+          name: KanwegTestUploadWidget.routeName,
+          path: KanwegTestUploadWidget.routePath,
+          builder: (context, params) => KanwegTestUploadWidget(),
+        ),
+        FFRoute(
+          name: MijnProfielWidget.routeName,
+          path: MijnProfielWidget.routePath,
+          builder: (context, params) => MijnProfielWidget(),
+        ),
+        FFRoute(
+          name: StadsactiviteitAanmakenWidget.routeName,
+          path: StadsactiviteitAanmakenWidget.routePath,
+          builder: (context, params) => StadsactiviteitAanmakenWidget(),
+        ),
+        FFRoute(
+          name: HorecagelegenhedenOverzichtCopyWidget.routeName,
+          path: HorecagelegenhedenOverzichtCopyWidget.routePath,
+          builder: (context, params) => HorecagelegenhedenOverzichtCopyWidget(
+            plaats: params.getParam(
+              'plaats',
+              ParamType.String,
+            ),
+          ),
+        ),
+        FFRoute(
+          name: HorecagelegenhedenOverzichtCopy2Widget.routeName,
+          path: HorecagelegenhedenOverzichtCopy2Widget.routePath,
+          builder: (context, params) => HorecagelegenhedenOverzichtCopy2Widget(
+            plaats: params.getParam(
+              'plaats',
+              ParamType.String,
+            ),
+          ),
+        ),
+        FFRoute(
+          name: HorecagelegenhedenOverzichtCopy2CopyWidget.routeName,
+          path: HorecagelegenhedenOverzichtCopy2CopyWidget.routePath,
+          builder: (context, params) =>
+              HorecagelegenhedenOverzichtCopy2CopyWidget(
+            plaats: params.getParam(
+              'plaats',
+              ParamType.String,
+            ),
+          ),
         )
       ].map((r) => r.toRoute(appStateNotifier)).toList(),
       observers: [routeObserver],

+ 388 - 0
lib/flutter_flow/upload_data.dart

@@ -0,0 +1,388 @@
+import 'dart:async';
+
+import 'package:file_picker/file_picker.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/foundation.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:image_picker/image_picker.dart';
+import 'package:mime_type/mime_type.dart';
+import 'package:video_player/video_player.dart';
+
+import '/flutter_flow/flutter_flow_theme.dart';
+import 'flutter_flow_util.dart';
+
+const allowedFormats = {'image/png', 'image/jpeg', 'video/mp4', 'image/gif'};
+
+class SelectedFile {
+  const SelectedFile({
+    this.storagePath = '',
+    this.filePath,
+    required this.bytes,
+    this.dimensions,
+    this.blurHash,
+    this.originalFilename = '',
+  });
+  final String storagePath;
+  final String? filePath;
+  final Uint8List bytes;
+  final MediaDimensions? dimensions;
+  final String? blurHash;
+  final String originalFilename;
+}
+
+class MediaDimensions {
+  const MediaDimensions({
+    this.height,
+    this.width,
+  });
+  final double? height;
+  final double? width;
+}
+
+enum MediaSource {
+  photoGallery,
+  videoGallery,
+  camera,
+}
+
+Future<List<SelectedFile>?> selectMediaWithSourceBottomSheet({
+  required BuildContext context,
+  String? storageFolderPath,
+  double? maxWidth,
+  double? maxHeight,
+  int? imageQuality,
+  required bool allowPhoto,
+  bool allowVideo = false,
+  String pickerFontFamily = 'Roboto',
+  Color textColor = const Color(0xFF111417),
+  Color backgroundColor = const Color(0xFFF5F5F5),
+  bool includeDimensions = false,
+  bool includeBlurHash = false,
+}) async {
+  final createUploadMediaListTile =
+      (String label, MediaSource mediaSource) => ListTile(
+            title: Text(
+              label,
+              textAlign: TextAlign.center,
+              style: GoogleFonts.getFont(
+                pickerFontFamily,
+                color: textColor,
+                fontWeight: FontWeight.w600,
+                fontSize: 20,
+              ),
+            ),
+            tileColor: backgroundColor,
+            dense: false,
+            onTap: () => Navigator.pop(
+              context,
+              mediaSource,
+            ),
+          );
+  final mediaSource = await showModalBottomSheet<MediaSource>(
+      context: context,
+      backgroundColor: backgroundColor,
+      builder: (context) {
+        return SafeArea(
+          top: false,
+          child: Column(
+            mainAxisSize: MainAxisSize.min,
+            children: [
+              if (!kIsWeb) ...[
+                Padding(
+                  padding: const EdgeInsets.fromLTRB(0, 8, 0, 0),
+                  child: ListTile(
+                    title: Text(
+                      'Choose Source',
+                      textAlign: TextAlign.center,
+                      style: GoogleFonts.getFont(
+                        pickerFontFamily,
+                        color: textColor.applyAlpha(0.65),
+                        fontWeight: FontWeight.w500,
+                        fontSize: 20,
+                      ),
+                    ),
+                    tileColor: backgroundColor,
+                    dense: false,
+                  ),
+                ),
+                const Divider(),
+              ],
+              if (allowPhoto && allowVideo) ...[
+                createUploadMediaListTile(
+                  'Gallery (Photo)',
+                  MediaSource.photoGallery,
+                ),
+                const Divider(),
+                createUploadMediaListTile(
+                  'Gallery (Video)',
+                  MediaSource.videoGallery,
+                ),
+              ] else if (allowPhoto)
+                createUploadMediaListTile(
+                  'Gallery',
+                  MediaSource.photoGallery,
+                )
+              else
+                createUploadMediaListTile(
+                  'Gallery',
+                  MediaSource.videoGallery,
+                ),
+              if (!kIsWeb) ...[
+                const Divider(),
+                createUploadMediaListTile('Camera', MediaSource.camera),
+                const Divider(),
+              ],
+              const SizedBox(height: 10),
+            ],
+          ),
+        );
+      });
+  if (mediaSource == null) {
+    return null;
+  }
+  return selectMedia(
+    storageFolderPath: storageFolderPath,
+    maxWidth: maxWidth,
+    maxHeight: maxHeight,
+    imageQuality: imageQuality,
+    isVideo: mediaSource == MediaSource.videoGallery ||
+        (mediaSource == MediaSource.camera && allowVideo && !allowPhoto),
+    mediaSource: mediaSource,
+    includeDimensions: includeDimensions,
+    includeBlurHash: includeBlurHash,
+  );
+}
+
+Future<List<SelectedFile>?> selectMedia({
+  String? storageFolderPath,
+  double? maxWidth,
+  double? maxHeight,
+  int? imageQuality,
+  bool isVideo = false,
+  MediaSource mediaSource = MediaSource.camera,
+  bool multiImage = false,
+  bool includeDimensions = false,
+  bool includeBlurHash = false,
+}) async {
+  final picker = ImagePicker();
+
+  if (multiImage) {
+    final pickedMediaFuture = picker.pickMultiImage(
+      maxWidth: maxWidth,
+      maxHeight: maxHeight,
+      imageQuality: imageQuality,
+    );
+    final pickedMedia = await pickedMediaFuture;
+    if (pickedMedia.isEmpty) {
+      return null;
+    }
+    return Future.wait(pickedMedia.asMap().entries.map((e) async {
+      final index = e.key;
+      final media = e.value;
+      final mediaBytes = await media.readAsBytes();
+      final path = _getStoragePath(storageFolderPath, media.name, false, index);
+      final dimensions = includeDimensions
+          ? isVideo
+              ? _getVideoDimensions(media.path)
+              : _getImageDimensions(mediaBytes)
+          : null;
+
+      return SelectedFile(
+        storagePath: path,
+        filePath: media.path,
+        bytes: mediaBytes,
+        dimensions: await dimensions,
+        originalFilename: media.name,
+      );
+    }));
+  }
+
+  final source = mediaSource == MediaSource.camera
+      ? ImageSource.camera
+      : ImageSource.gallery;
+  final pickedMediaFuture = isVideo
+      ? picker.pickVideo(source: source)
+      : picker.pickImage(
+          maxWidth: maxWidth,
+          maxHeight: maxHeight,
+          imageQuality: imageQuality,
+          source: source,
+        );
+  final pickedMedia = await pickedMediaFuture;
+  final mediaBytes = await pickedMedia?.readAsBytes();
+  if (mediaBytes == null) {
+    return null;
+  }
+  final path = _getStoragePath(storageFolderPath, pickedMedia!.name, isVideo);
+  final dimensions = includeDimensions
+      ? isVideo
+          ? _getVideoDimensions(pickedMedia.path)
+          : _getImageDimensions(mediaBytes)
+      : null;
+
+  return [
+    SelectedFile(
+      storagePath: path,
+      filePath: pickedMedia.path,
+      bytes: mediaBytes,
+      dimensions: await dimensions,
+      originalFilename: pickedMedia.name,
+    ),
+  ];
+}
+
+bool validateFileFormat(String filePath, BuildContext context) {
+  if (allowedFormats.contains(mime(filePath))) {
+    return true;
+  }
+  ScaffoldMessenger.of(context)
+    ..hideCurrentSnackBar()
+    ..showSnackBar(SnackBar(
+      content: Text('Invalid file format: ${mime(filePath)}'),
+    ));
+  return false;
+}
+
+Future<SelectedFile?> selectFile({
+  String? storageFolderPath,
+  List<String>? allowedExtensions,
+}) =>
+    selectFiles(
+      storageFolderPath: storageFolderPath,
+      allowedExtensions: allowedExtensions,
+      multiFile: false,
+    ).then((value) => value?.first);
+
+Future<List<SelectedFile>?> selectFiles({
+  String? storageFolderPath,
+  List<String>? allowedExtensions,
+  bool multiFile = false,
+}) async {
+  final pickedFiles = await FilePicker.platform.pickFiles(
+    type: allowedExtensions != null ? FileType.custom : FileType.any,
+    allowedExtensions: allowedExtensions,
+    withData: true,
+    allowMultiple: multiFile,
+  );
+  if (pickedFiles == null || pickedFiles.files.isEmpty) {
+    return null;
+  }
+  if (multiFile) {
+    return Future.wait(pickedFiles.files.asMap().entries.map((e) async {
+      final index = e.key;
+      final file = e.value;
+      final storagePath =
+          _getStoragePath(storageFolderPath, file.name, false, index);
+      return SelectedFile(
+        storagePath: storagePath,
+        filePath: isWeb ? null : file.path,
+        bytes: file.bytes!,
+        originalFilename: file.name,
+      );
+    }));
+  }
+  final file = pickedFiles.files.first;
+  if (file.bytes == null) {
+    return null;
+  }
+  final storagePath = _getStoragePath(storageFolderPath, file.name, false);
+  return [
+    SelectedFile(
+      storagePath: storagePath,
+      filePath: isWeb ? null : file.path,
+      bytes: file.bytes!,
+      originalFilename: file.name,
+    )
+  ];
+}
+
+List<SelectedFile> selectedFilesFromUploadedFiles(
+  List<FFUploadedFile> uploadedFiles, {
+  String? storageFolderPath,
+  bool isMultiData = false,
+}) =>
+    uploadedFiles.asMap().entries.map(
+      (entry) {
+        final index = entry.key;
+        final file = entry.value;
+        return SelectedFile(
+            storagePath: _getStoragePath(
+              storageFolderPath != null ? storageFolderPath : null,
+              file.name!,
+              false,
+              isMultiData ? index : null,
+            ),
+            bytes: file.bytes!,
+            originalFilename: file.originalFilename);
+      },
+    ).toList();
+
+Future<MediaDimensions> _getImageDimensions(Uint8List mediaBytes) async {
+  final image = await decodeImageFromList(mediaBytes);
+  return MediaDimensions(
+    width: image.width.toDouble(),
+    height: image.height.toDouble(),
+  );
+}
+
+Future<MediaDimensions> _getVideoDimensions(String path) async {
+  final VideoPlayerController videoPlayerController =
+      VideoPlayerController.asset(path);
+  await videoPlayerController.initialize();
+  final size = videoPlayerController.value.size;
+  return MediaDimensions(width: size.width, height: size.height);
+}
+
+String _getStoragePath(
+  String? pathPrefix,
+  String filePath,
+  bool isVideo, [
+  int? index,
+]) {
+  pathPrefix = _removeTrailingSlash(pathPrefix);
+  final timestamp = DateTime.now().microsecondsSinceEpoch;
+  // Workaround fixed by https://github.com/flutter/plugins/pull/3685
+  // (not yet in stable).
+  final ext = isVideo ? 'mp4' : filePath.split('.').last;
+  final indexStr = index != null ? '_$index' : '';
+  return '$pathPrefix/$timestamp$indexStr.$ext';
+}
+
+String getSignatureStoragePath([String? pathPrefix]) {
+  pathPrefix = _removeTrailingSlash(pathPrefix);
+  final timestamp = DateTime.now().microsecondsSinceEpoch;
+  return '$pathPrefix/signature_$timestamp.png';
+}
+
+void showUploadMessage(
+  BuildContext context,
+  String message, {
+  bool showLoading = false,
+}) {
+  ScaffoldMessenger.of(context)
+    ..hideCurrentSnackBar()
+    ..showSnackBar(
+      SnackBar(
+        content: Row(
+          children: [
+            if (showLoading)
+              Padding(
+                padding: EdgeInsetsDirectional.only(end: 10.0),
+                child: CircularProgressIndicator(
+                  valueColor: Theme.of(context).brightness == Brightness.dark
+                      ? AlwaysStoppedAnimation<Color>(
+                          FlutterFlowTheme.of(context).accent4)
+                      : null,
+                ),
+              ),
+            Text(message),
+          ],
+        ),
+        duration: showLoading ? Duration(days: 1) : Duration(seconds: 4),
+      ),
+    );
+}
+
+String? _removeTrailingSlash(String? path) => path != null && path.endsWith('/')
+    ? path.substring(0, path.length - 1)
+    : path;

+ 8 - 0
lib/horecagelegenhedenoverzicht/event_current/event_current_model.dart

@@ -1,4 +1,5 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/google_maps_icon_button_widget.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart';
 import '/evenement/evenement_info/evenement_info_widget.dart';
@@ -38,6 +39,8 @@ class EventCurrentModel extends FlutterFlowModel<EventCurrentWidget> {
 
   // Model for EvenementInfo component.
   late EvenementInfoModel evenementInfoModel;
+  // Model for GoogleMapsIconButton component.
+  late GoogleMapsIconButtonModel googleMapsIconButtonModel;
   // Model for EvenementV2HTMLComponent component.
   late EvenementV2HTMLComponentModel evenementV2HTMLComponentModel;
   // Model for EvenementHorecagelegenheid component.
@@ -53,6 +56,8 @@ class EventCurrentModel extends FlutterFlowModel<EventCurrentWidget> {
   @override
   void initState(BuildContext context) {
     evenementInfoModel = createModel(context, () => EvenementInfoModel());
+    googleMapsIconButtonModel =
+        createModel(context, () => GoogleMapsIconButtonModel());
     evenementV2HTMLComponentModel =
         createModel(context, () => EvenementV2HTMLComponentModel());
     evenementHorecagelegenheidModel =
@@ -67,6 +72,7 @@ class EventCurrentModel extends FlutterFlowModel<EventCurrentWidget> {
   @override
   void dispose() {
     evenementInfoModel.dispose();
+    googleMapsIconButtonModel.dispose();
     evenementV2HTMLComponentModel.dispose();
     evenementHorecagelegenheidModel.dispose();
     drawerComponentModel.dispose();
@@ -112,6 +118,8 @@ class EventCurrentModel extends FlutterFlowModel<EventCurrentWidget> {
         componentStates: {
           'evenementInfoModel (EvenementInfo)':
               evenementInfoModel?.toWidgetClassDebugData(),
+          'googleMapsIconButtonModel (GoogleMapsIconButton)':
+              googleMapsIconButtonModel?.toWidgetClassDebugData(),
           'evenementV2HTMLComponentModel (EvenementV2HTMLComponent)':
               evenementV2HTMLComponentModel?.toWidgetClassDebugData(),
           'evenementHorecagelegenheidModel (EvenementHorecagelegenheid)':

+ 50 - 17
lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart

@@ -1,4 +1,5 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/google_maps_icon_button_widget.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart';
 import '/evenement/evenement_info/evenement_info_widget.dart';
@@ -262,14 +263,20 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                                   return ClipRRect(
                                     borderRadius: BorderRadius.circular(8.0),
                                     child: OctoImage(
-                                      placeholderBuilder: (_) =>
-                                          SizedBox.expand(
-                                        child: Image(
-                                          image: BlurHashImage(
-                                              'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                          fit: BoxFit.cover,
-                                        ),
-                                      ),
+                                      placeholderBuilder: (_) {
+                                        final blurHash =
+                                            'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                        if (!validateBlurhash(blurHash)) {
+                                          return const SizedBox.shrink();
+                                        }
+                                        return SizedBox.expand(
+                                          child: Image(
+                                            image: BlurHashImage(blurHash),
+                                            fit: BoxFit.cover,
+                                          ),
+                                        );
+                                      },
                                       image: CachedNetworkImageProvider(
                                         fotoosItem,
                                       ),
@@ -360,7 +367,7 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                           padding: EdgeInsets.all(4.0),
                           child: Text(
                             FFLocalizations.of(context).getText(
-                              'z63o5kzf' /* Delen */,
+                              '2cyobro5' /* Delen */,
                             ),
                             style:
                                 FlutterFlowTheme.of(context).bodyLarge.override(
@@ -634,14 +641,21 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                                           borderRadius:
                                               BorderRadius.circular(8.0),
                                           child: OctoImage(
-                                            placeholderBuilder: (_) =>
-                                                SizedBox.expand(
-                                              child: Image(
-                                                image: BlurHashImage(
-                                                    'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                                fit: BoxFit.cover,
-                                              ),
-                                            ),
+                                            placeholderBuilder: (_) {
+                                              final blurHash =
+                                                  'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                              if (!validateBlurhash(blurHash)) {
+                                                return const SizedBox.shrink();
+                                              }
+                                              return SizedBox.expand(
+                                                child: Image(
+                                                  image:
+                                                      BlurHashImage(blurHash),
+                                                  fit: BoxFit.cover,
+                                                ),
+                                              );
+                                            },
                                             image: CachedNetworkImageProvider(
                                               EvenementCall.eventLogog(
                                                 eventCurrentEvenementResponse
@@ -732,6 +746,25 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                                     }),
                                   ),
                                 ),
+                                wrapWithModel(
+                                  model: _model.googleMapsIconButtonModel,
+                                  updateCallback: () => safeSetState(() {}),
+                                  child: Builder(builder: (_) {
+                                    return DebugFlutterFlowModelContext(
+                                      rootModel: _model.rootModel,
+                                      child: GoogleMapsIconButtonWidget(
+                                        adres: EvenementCall.eventAdres(
+                                          eventCurrentEvenementResponse
+                                              .jsonBody,
+                                        )!,
+                                        plaats: EvenementCall.eventPlaats(
+                                          eventCurrentEvenementResponse
+                                              .jsonBody,
+                                        )!,
+                                      ),
+                                    );
+                                  }),
+                                ),
                               ],
                             ),
                           ),

+ 572 - 11
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_model.dart

@@ -6,10 +6,12 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/index.dart';
 import 'horecagelegenheden_overzicht_widget.dart'
     show HorecagelegenhedenOverzichtWidget;
 import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
 import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
 import 'package:google_fonts/google_fonts.dart';
@@ -59,8 +61,236 @@ class HorecagelegenhedenOverzichtModel
 
   bool get tabVerhuurcateringGeladen => _tabVerhuurcateringGeladen;
 
+  String? _zoektermActiviteiten;
+  set zoektermActiviteiten(String? value) {
+    _zoektermActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermActiviteiten => _zoektermActiviteiten;
+
+  String? _zoektermCultuur;
+  set zoektermCultuur(String? value) {
+    _zoektermCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermCultuur => _zoektermCultuur;
+
+  String? _zoektermEetgelegenheden;
+  set zoektermEetgelegenheden(String? value) {
+    _zoektermEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermEetgelegenheden => _zoektermEetgelegenheden;
+
+  String? _zoektermOvernachten;
+  set zoektermOvernachten(String? value) {
+    _zoektermOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermOvernachten => _zoektermOvernachten;
+
+  String? _zoektermUitgaan;
+  set zoektermUitgaan(String? value) {
+    _zoektermUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermUitgaan => _zoektermUitgaan;
+
+  String? _zoektermVerhuurCatering;
+  set zoektermVerhuurCatering(String? value) {
+    _zoektermVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermVerhuurCatering => _zoektermVerhuurCatering;
+
+  String? _categorieFilterActiviteiten;
+  set categorieFilterActiviteiten(String? value) {
+    _categorieFilterActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterActiviteiten => _categorieFilterActiviteiten;
+
+  String? _categorieFilterCultuur;
+  set categorieFilterCultuur(String? value) {
+    _categorieFilterCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterCultuur => _categorieFilterCultuur;
+
+  String? _categorieFilterEetgelegenheden;
+  set categorieFilterEetgelegenheden(String? value) {
+    _categorieFilterEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterEetgelegenheden => _categorieFilterEetgelegenheden;
+
+  String? _categorieFilterOvernachten;
+  set categorieFilterOvernachten(String? value) {
+    _categorieFilterOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterOvernachten => _categorieFilterOvernachten;
+
+  String? _categorieFilterUitgaan;
+  set categorieFilterUitgaan(String? value) {
+    _categorieFilterUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterUitgaan => _categorieFilterUitgaan;
+
+  String? _categorieFilterVerhuurCatering;
+  set categorieFilterVerhuurCatering(String? value) {
+    _categorieFilterVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterVerhuurCatering => _categorieFilterVerhuurCatering;
+
+  late LoggableList<dynamic> _alleActiviteiten = LoggableList([]);
+  set alleActiviteiten(List<dynamic> value) {
+    if (value != null) {
+      _alleActiviteiten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleActiviteiten =>
+      _alleActiviteiten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleActiviteiten(dynamic item) => alleActiviteiten.add(item);
+  void removeFromAlleActiviteiten(dynamic item) =>
+      alleActiviteiten.remove(item);
+  void removeAtIndexFromAlleActiviteiten(int index) =>
+      alleActiviteiten.removeAt(index);
+  void insertAtIndexInAlleActiviteiten(int index, dynamic item) =>
+      alleActiviteiten.insert(index, item);
+  void updateAlleActiviteitenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleActiviteiten[index] = updateFn(alleActiviteiten[index]);
+
+  late LoggableList<dynamic> _alleCultuur = LoggableList([]);
+  set alleCultuur(List<dynamic> value) {
+    if (value != null) {
+      _alleCultuur = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleCultuur =>
+      _alleCultuur?..logger = () => debugLogWidgetClass(this);
+  void addToAlleCultuur(dynamic item) => alleCultuur.add(item);
+  void removeFromAlleCultuur(dynamic item) => alleCultuur.remove(item);
+  void removeAtIndexFromAlleCultuur(int index) => alleCultuur.removeAt(index);
+  void insertAtIndexInAlleCultuur(int index, dynamic item) =>
+      alleCultuur.insert(index, item);
+  void updateAlleCultuurAtIndex(int index, Function(dynamic) updateFn) =>
+      alleCultuur[index] = updateFn(alleCultuur[index]);
+
+  late LoggableList<dynamic> _alleEetgelegenheden = LoggableList([]);
+  set alleEetgelegenheden(List<dynamic> value) {
+    if (value != null) {
+      _alleEetgelegenheden = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleEetgelegenheden =>
+      _alleEetgelegenheden?..logger = () => debugLogWidgetClass(this);
+  void addToAlleEetgelegenheden(dynamic item) => alleEetgelegenheden.add(item);
+  void removeFromAlleEetgelegenheden(dynamic item) =>
+      alleEetgelegenheden.remove(item);
+  void removeAtIndexFromAlleEetgelegenheden(int index) =>
+      alleEetgelegenheden.removeAt(index);
+  void insertAtIndexInAlleEetgelegenheden(int index, dynamic item) =>
+      alleEetgelegenheden.insert(index, item);
+  void updateAlleEetgelegenhedenAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleEetgelegenheden[index] = updateFn(alleEetgelegenheden[index]);
+
+  late LoggableList<dynamic> _alleOvernachten = LoggableList([]);
+  set alleOvernachten(List<dynamic> value) {
+    if (value != null) {
+      _alleOvernachten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleOvernachten =>
+      _alleOvernachten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleOvernachten(dynamic item) => alleOvernachten.add(item);
+  void removeFromAlleOvernachten(dynamic item) => alleOvernachten.remove(item);
+  void removeAtIndexFromAlleOvernachten(int index) =>
+      alleOvernachten.removeAt(index);
+  void insertAtIndexInAlleOvernachten(int index, dynamic item) =>
+      alleOvernachten.insert(index, item);
+  void updateAlleOvernachtenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleOvernachten[index] = updateFn(alleOvernachten[index]);
+
+  late LoggableList<dynamic> _alleUitgaan = LoggableList([]);
+  set alleUitgaan(List<dynamic> value) {
+    if (value != null) {
+      _alleUitgaan = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleUitgaan =>
+      _alleUitgaan?..logger = () => debugLogWidgetClass(this);
+  void addToAlleUitgaan(dynamic item) => alleUitgaan.add(item);
+  void removeFromAlleUitgaan(dynamic item) => alleUitgaan.remove(item);
+  void removeAtIndexFromAlleUitgaan(int index) => alleUitgaan.removeAt(index);
+  void insertAtIndexInAlleUitgaan(int index, dynamic item) =>
+      alleUitgaan.insert(index, item);
+  void updateAlleUitgaanAtIndex(int index, Function(dynamic) updateFn) =>
+      alleUitgaan[index] = updateFn(alleUitgaan[index]);
+
+  late LoggableList<dynamic> _alleVerhuurCatering = LoggableList([]);
+  set alleVerhuurCatering(List<dynamic> value) {
+    if (value != null) {
+      _alleVerhuurCatering = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleVerhuurCatering =>
+      _alleVerhuurCatering?..logger = () => debugLogWidgetClass(this);
+  void addToAlleVerhuurCatering(dynamic item) => alleVerhuurCatering.add(item);
+  void removeFromAlleVerhuurCatering(dynamic item) =>
+      alleVerhuurCatering.remove(item);
+  void removeAtIndexFromAlleVerhuurCatering(int index) =>
+      alleVerhuurCatering.removeAt(index);
+  void insertAtIndexInAlleVerhuurCatering(int index, dynamic item) =>
+      alleVerhuurCatering.insert(index, item);
+  void updateAlleVerhuurCateringAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleVerhuurCatering[index] = updateFn(alleVerhuurCatering[index]);
+
   ///  State fields for stateful widgets in this page.
 
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in HorecagelegenhedenOverzicht widget.
+  List<dynamic>? _resultHorecaActiviteiten;
+  set resultHorecaActiviteiten(List<dynamic>? value) {
+    _resultHorecaActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaActiviteiten => _resultHorecaActiviteiten;
+
   // State field(s) for TabBar widget.
   TabController? tabBarController;
   int get tabBarCurrentIndex =>
@@ -68,18 +298,78 @@ class HorecagelegenhedenOverzichtModel
   int get tabBarPreviousIndex =>
       tabBarController != null ? tabBarController!.previousIndex : 0;
 
+  // State field(s) for TextField widget.
+  FocusNode? textFieldFocusNode1;
+  TextEditingController? textController1;
+  String? Function(BuildContext, String?)? textController1Validator;
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels1 = {};
-  // Models for HorecagelegenheidoverzichtKaart dynamic component.
-  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels2 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabCultuur widget.
+  List<dynamic>? _resultHorecaCultuur;
+  set resultHorecaCultuur(List<dynamic>? value) {
+    _resultHorecaCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaCultuur => _resultHorecaCultuur;
+
+  // Model for HorecagelegenheidoverzichtKaart component.
+  late HorecagelegenheidoverzichtKaartModel
+      horecagelegenheidoverzichtKaartModel2;
+  // State field(s) for TextField widget.
+  FocusNode? textFieldFocusNode2;
+  TextEditingController? textController2;
+  String? Function(BuildContext, String?)? textController2Validator;
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabEetgelegenheden widget.
+  List<dynamic>? _resultHorecaEetgelegenheden;
+  set resultHorecaEetgelegenheden(List<dynamic>? value) {
+    _resultHorecaEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaEetgelegenheden =>
+      _resultHorecaEetgelegenheden;
+
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels3 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabOvernachten widget.
+  List<dynamic>? _resultHorecaOvernachten;
+  set resultHorecaOvernachten(List<dynamic>? value) {
+    _resultHorecaOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaOvernachten => _resultHorecaOvernachten;
+
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels4 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabUitgaan widget.
+  List<dynamic>? _resultHorecaUitgaansgelegenheden;
+  set resultHorecaUitgaansgelegenheden(List<dynamic>? value) {
+    _resultHorecaUitgaansgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaUitgaansgelegenheden =>
+      _resultHorecaUitgaansgelegenheden;
+
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels5 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabVerhuurCatering widget.
+  List<dynamic>? _resultHorecaVerhuur;
+  set resultHorecaVerhuur(List<dynamic>? value) {
+    _resultHorecaVerhuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaVerhuur => _resultHorecaVerhuur;
+
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels6 = {};
+  // State field(s) for TextField widget.
+  FocusNode? textFieldFocusNode3;
+  TextEditingController? textController3;
+  String? Function(BuildContext, String?)? textController3Validator;
   // Model for HeaderButtonsComponent component.
   late HeaderButtonsComponentModel headerButtonsComponentModel;
   // Model for drawerComponent component.
@@ -90,6 +380,8 @@ class HorecagelegenhedenOverzichtModel
   final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
   @override
   void initState(BuildContext context) {
+    horecagelegenheidoverzichtKaartModel2 =
+        createModel(context, () => HorecagelegenheidoverzichtKaartModel());
     headerButtonsComponentModel =
         createModel(context, () => HeaderButtonsComponentModel());
     drawerComponentModel = createModel(context, () => DrawerComponentModel());
@@ -100,6 +392,16 @@ class HorecagelegenhedenOverzichtModel
   @override
   void dispose() {
     tabBarController?.dispose();
+    textFieldFocusNode1?.dispose();
+    textController1?.dispose();
+
+    horecagelegenheidoverzichtKaartModel2.dispose();
+    textFieldFocusNode2?.dispose();
+    textController2?.dispose();
+
+    textFieldFocusNode3?.dispose();
+    textController3?.dispose();
+
     headerButtonsComponentModel.dispose();
     drawerComponentModel.dispose();
   }
@@ -168,6 +470,192 @@ class HorecagelegenhedenOverzichtModel
                 'reference=QjMKIgoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbhIFMWU3eHEqBxIFZmFsc2VyBAgFIAFQAVoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbmIbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
             name: 'bool',
             nullable: false,
+          ),
+          'zoektermActiviteiten': debugSerializeParam(
+            zoektermActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QikKHQoUem9la3Rlcm1BY3Rpdml0ZWl0ZW4SBTZqYTVtKgISAHIECAMgAFABWhR6b2VrdGVybUFjdGl2aXRlaXRlbmIbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermCultuur': debugSerializeParam(
+            zoektermCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1DdWx0dXVyEgVqdXA4aSoCEgByBAgDIABQAVoPem9la3Rlcm1DdWx0dXVyYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermEetgelegenheden': debugSerializeParam(
+            zoektermEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1FZXRnZWxlZ2VuaGVkZW4SBXh0b2VlKgISAHIECAMgAFABWhd6b2VrdGVybUVldGdlbGVnZW5oZWRlbmIbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermOvernachten': debugSerializeParam(
+            zoektermOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QigKHAoTem9la3Rlcm1PdmVybmFjaHRlbhIFcXdicHAqAhIAcgQIAyAAUAFaE3pvZWt0ZXJtT3Zlcm5hY2h0ZW5iG0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodA==',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermUitgaan': debugSerializeParam(
+            zoektermUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1VaXRnYWFuEgVreHptaSoCEgByBAgDIABQAVoPem9la3Rlcm1VaXRnYWFuYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermVerhuurCatering': debugSerializeParam(
+            zoektermVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1WZXJodXVyQ2F0ZXJpbmcSBWd6eHcwKgISAHIECAMgAFABWhd6b2VrdGVybVZlcmh1dXJDYXRlcmluZ2IbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterActiviteiten': debugSerializeParam(
+            categorieFilterActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QjAKJAobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuEgVieDgwOSoCEgByBAgDIABQAVobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterCultuur': debugSerializeParam(
+            categorieFilterCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyQ3VsdHV1chIFdXA3d2kqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlckN1bHR1dXJiG0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodA==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterEetgelegenheden': debugSerializeParam(
+            categorieFilterEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuEgVsa2dwayoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterOvernachten': debugSerializeParam(
+            categorieFilterOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=Qi8KIwoaY2F0ZWdvcmllRmlsdGVyT3Zlcm5hY2h0ZW4SBTQ2dG1nKgISAHIECAMgAFABWhpjYXRlZ29yaWVGaWx0ZXJPdmVybmFjaHRlbmIbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterUitgaan': debugSerializeParam(
+            categorieFilterUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyVWl0Z2FhbhIFY2NveHEqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlclVpdGdhYW5iG0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodA==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterVerhuurCatering': debugSerializeParam(
+            categorieFilterVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nEgVxc3U3OCoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'alleActiviteiten': debugSerializeParam(
+            alleActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiEKGQoQYWxsZUFjdGl2aXRlaXRlbhIFdTN0cXRyBBICCAlQAVoQYWxsZUFjdGl2aXRlaXRlbmIbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleCultuur': debugSerializeParam(
+            alleCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QhwKFAoLYWxsZUN1bHR1dXISBWltMWR5cgQSAggJUAFaC2FsbGVDdWx0dXVyYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleEetgelegenheden': debugSerializeParam(
+            alleEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiQKHAoTYWxsZUVldGdlbGVnZW5oZWRlbhIFZWEzd2pyBBICCAlQAVoTYWxsZUVldGdlbGVnZW5oZWRlbmIbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleOvernachten': debugSerializeParam(
+            alleOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiAKGAoPYWxsZU92ZXJuYWNodGVuEgVtdnk1OXIEEgIICVABWg9hbGxlT3Zlcm5hY2h0ZW5iG0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodA==',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleUitgaan': debugSerializeParam(
+            alleUitgaan,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QhwKFAoLYWxsZVVpdGdhYW4SBTN6NHFmcgQSAggJUAFaC2FsbGVVaXRnYWFuYhtIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHQ=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleVerhuurCatering': debugSerializeParam(
+            alleVerhuurCatering,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            searchReference:
+                'reference=QiQKHAoTYWxsZVZlcmh1dXJDYXRlcmluZxIFd2tlcWVyBBICCAlQAVoTYWxsZVZlcmh1dXJDYXRlcmluZ2IbSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0',
+            name: 'dynamic',
+            nullable: false,
           )
         }.entries,
         widgetStates: {
@@ -186,11 +674,93 @@ class HorecagelegenhedenOverzichtModel
                 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
             name: 'int',
             nullable: true,
+          ),
+          'textFieldText1': debugSerializeParam(
+            textController1?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldText2': debugSerializeParam(
+            textController2?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldText3': debugSerializeParam(
+            textController3?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'String',
+            nullable: true,
+          )
+        }.entries,
+        actionOutputs: {
+          'resultHorecaActiviteiten': debugSerializeParam(
+            resultHorecaActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaCultuur': debugSerializeParam(
+            resultHorecaCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaEetgelegenheden': debugSerializeParam(
+            resultHorecaEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaOvernachten': debugSerializeParam(
+            resultHorecaOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaUitgaansgelegenheden': debugSerializeParam(
+            resultHorecaUitgaansgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaVerhuur': debugSerializeParam(
+            resultHorecaVerhuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+            name: 'dynamic',
+            nullable: true,
           )
         }.entries,
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
+          'horecagelegenheidoverzichtKaartModel2 (HorecagelegenheidoverzichtKaart)':
+              horecagelegenheidoverzichtKaartModel2?.toWidgetClassDebugData(),
           'headerButtonsComponentModel (HeaderButtonsComponent)':
               headerButtonsComponentModel?.toWidgetClassDebugData(),
           'drawerComponentModel (drawerComponent)':
@@ -212,15 +782,6 @@ class HorecagelegenhedenOverzichtModel
                   .map((e) => e.toWidgetClassDebugData()),
             ).entries,
           ),
-          'horecagelegenheidoverzichtKaartModels2 (List<HorecagelegenheidoverzichtKaart>)':
-              DynamicWidgetClassDebugData(
-            componentStates: Map.fromIterables(
-              List.generate(horecagelegenheidoverzichtKaartModels2.length,
-                  (index) => '[$index]'),
-              horecagelegenheidoverzichtKaartModels2.values
-                  .map((e) => e.toWidgetClassDebugData()),
-            ).entries,
-          ),
           'horecagelegenheidoverzichtKaartModels3 (List<HorecagelegenheidoverzichtKaart>)':
               DynamicWidgetClassDebugData(
             componentStates: Map.fromIterables(

+ 536 - 218
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart

@@ -6,8 +6,10 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/index.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
 import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
 import 'package:google_fonts/google_fonts.dart';
@@ -43,6 +45,19 @@ class _HorecagelegenhedenOverzichtWidgetState
     super.initState();
     _model = createModel(context, () => HorecagelegenhedenOverzichtModel());
 
+    // On page load action.
+    SchedulerBinding.instance.addPostFrameCallback((_) async {
+      _model.resultHorecaActiviteiten =
+          await actions.fetchAlleHorecagelegenheden(
+        '17969',
+        widget!.plaats!,
+        'services_1',
+      );
+      _model.alleActiviteiten =
+          _model.resultHorecaActiviteiten!.toList().cast<dynamic>();
+      safeSetState(() {});
+    });
+
     _model.tabBarController = TabController(
       vsync: this,
       length: 6,
@@ -52,6 +67,24 @@ class _HorecagelegenhedenOverzichtWidgetState
       ..addListener(() {
         debugLogWidgetClass(_model);
       });
+
+    _model.textController1 ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldFocusNode1 ??= FocusNode();
+
+    _model.textController2 ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldFocusNode2 ??= FocusNode();
+
+    _model.textController3 ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldFocusNode3 ??= FocusNode();
   }
 
   @override
@@ -112,7 +145,6 @@ class _HorecagelegenhedenOverzichtWidgetState
         ?.call(_model);
     context.watch<FFAppState>();
     _model.horecagelegenheidoverzichtKaartModels1.clear();
-    _model.horecagelegenheidoverzichtKaartModels2.clear();
     _model.horecagelegenheidoverzichtKaartModels3.clear();
     _model.horecagelegenheidoverzichtKaartModels4.clear();
     _model.horecagelegenheidoverzichtKaartModels5.clear();
@@ -273,22 +305,86 @@ class _HorecagelegenhedenOverzichtWidgetState
                               () async {
                                 _model.tabVerhuurcateringGeladen = true;
                                 safeSetState(() {});
+                                _model.resultHorecaCultuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17963',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleCultuur = _model.resultHorecaCultuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
                               },
                               () async {
                                 _model.tabEetgelegenhedenGeladen = true;
                                 safeSetState(() {});
+                                _model.resultHorecaEetgelegenheden =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '34',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleEetgelegenheden = _model
+                                    .resultHorecaEetgelegenheden!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
                               },
                               () async {
                                 _model.tabOvernachtenGeladen = true;
                                 safeSetState(() {});
+                                _model.resultHorecaOvernachten =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17965',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleOvernachten = _model
+                                    .resultHorecaOvernachten!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
                               },
                               () async {
                                 _model.tabUitgaanGeladen = true;
                                 safeSetState(() {});
+                                _model.resultHorecaUitgaansgelegenheden =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17967',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleUitgaan = _model
+                                    .resultHorecaUitgaansgelegenheden!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
                               },
                               () async {
                                 _model.tabVerhuurcateringGeladen = true;
                                 safeSetState(() {});
+                                _model.resultHorecaVerhuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17968',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleVerhuurCatering = _model
+                                    .resultHorecaVerhuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
                               }
                             ][i]();
                           },
@@ -301,6 +397,134 @@ class _HorecagelegenhedenOverzichtWidgetState
                             Column(
                               mainAxisSize: MainAxisSize.max,
                               children: [
+                                Container(
+                                  width: 200.0,
+                                  child: TextFormField(
+                                    controller: _model.textController1,
+                                    focusNode: _model.textFieldFocusNode1,
+                                    autofocus: false,
+                                    enabled: true,
+                                    obscureText: false,
+                                    decoration: InputDecoration(
+                                      isDense: true,
+                                      labelStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      hintText:
+                                          FFLocalizations.of(context).getText(
+                                        'zk6al0vg' /* TextField */,
+                                      ),
+                                      hintStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      enabledBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      errorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedErrorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      filled: true,
+                                      fillColor: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            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,
+                                        ),
+                                    cursorColor: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    enableInteractiveSelection: true,
+                                    validator: _model.textController1Validator
+                                        .asValidator(context),
+                                  ),
+                                ),
                                 Expanded(
                                   child: FutureBuilder<ApiCallResponse>(
                                     future: HorecagelegenheidoverzichtCall.call(
@@ -489,230 +713,224 @@ class _HorecagelegenhedenOverzichtWidgetState
                                 ),
                               ],
                             ),
-                            Builder(
-                              builder: (context) {
-                                if (_model.tabCultuurGeladen) {
-                                  return Column(
-                                    mainAxisSize: MainAxisSize.max,
-                                    children: [
-                                      Expanded(
-                                        child: FutureBuilder<ApiCallResponse>(
-                                          future: HorecagelegenheidoverzichtCall
-                                              .call(
-                                            horcat: '17963',
-                                            townid: widget!.plaats,
+                            Column(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Expanded(
+                                  child: FutureBuilder<ApiCallResponse>(
+                                    future: HorecagelegenheidoverzichtCall.call(
+                                      horcat: '34',
+                                      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: Color(0xFFB1061E),
+                                              size: 80.0,
+                                            ),
                                           ),
-                                          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: Color(0xFFB1061E),
-                                                    size: 80.0,
-                                                  ),
-                                                ),
-                                              );
-                                            }
-                                            final staggeredViewHorecagelegenheidoverzichtResponse =
-                                                snapshot.data!;
-                                            _model.debugBackendQueries[
-                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_p4qa6f0b'] =
-                                                debugSerializeParam(
-                                              staggeredViewHorecagelegenheidoverzichtResponse
-                                                  .statusCode,
-                                              ParamType.int,
-                                              link:
-                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
-                                              name: 'int',
-                                              nullable: false,
-                                            );
-                                            _model.debugBackendQueries[
-                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_p4qa6f0b'] =
-                                                debugSerializeParam(
-                                              staggeredViewHorecagelegenheidoverzichtResponse
-                                                  .bodyText,
-                                              ParamType.String,
-                                              link:
-                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
-                                              name: 'String',
-                                              nullable: false,
-                                            );
-                                            debugLogWidgetClass(_model);
-
-                                            return Builder(
-                                              builder: (context) {
-                                                final horecagelegenheden =
-                                                    getJsonField(
-                                                  staggeredViewHorecagelegenheidoverzichtResponse
-                                                      .jsonBody,
-                                                  r'''$''',
-                                                ).toList().take(25).toList();
-                                                if (horecagelegenheden
-                                                    .isEmpty) {
-                                                  return 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=HorecagelegenhedenOverzicht',
-                                                  name: 'dynamic',
-                                                  nullable: false,
-                                                );
-                                                debugLogWidgetClass(_model);
+                                        );
+                                      }
+                                      final staggeredViewHorecagelegenheidoverzichtResponse =
+                                          snapshot.data!;
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_lvufq1md'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .statusCode,
+                                        ParamType.int,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+                                        name: 'int',
+                                        nullable: false,
+                                      );
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_lvufq1md'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .bodyText,
+                                        ParamType.String,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzicht',
+                                        name: 'String',
+                                        nullable: false,
+                                      );
+                                      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;
-                                                      }
-                                                    }(),
+                                      return MasonryGridView.builder(
+                                        gridDelegate:
+                                            SliverSimpleGridDelegateWithFixedCrossAxisCount(
+                                          crossAxisCount: 2,
+                                        ),
+                                        crossAxisSpacing: 10.0,
+                                        mainAxisSpacing: 10.0,
+                                        itemCount: 1,
+                                        itemBuilder: (context, index) {
+                                          return [
+                                            () => Container(
+                                                  width: 100.0,
+                                                  height: 100.0,
+                                                  decoration: BoxDecoration(
+                                                    color: FlutterFlowTheme.of(
+                                                            context)
+                                                        .secondaryBackground,
                                                   ),
-                                                  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.horecagelegenheidoverzichtKaartModels2[
-                                                                  'Keyjss_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
-                                                            },
-                                                            child:
-                                                                HorecagelegenheidoverzichtKaartWidget(
-                                                              key: Key(
-                                                                  'Keyjss_${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>(),
-                                                            ),
-                                                          );
-                                                        }),
-                                                      ),
-                                                    );
-                                                  },
-                                                );
-                                              },
-                                            );
-                                          },
+                                                  child: wrapWithModel(
+                                                    model: _model
+                                                        .horecagelegenheidoverzichtKaartModel2,
+                                                    updateCallback: () =>
+                                                        safeSetState(() {}),
+                                                    child:
+                                                        Builder(builder: (_) {
+                                                      return DebugFlutterFlowModelContext(
+                                                        rootModel:
+                                                            _model.rootModel,
+                                                        child:
+                                                            HorecagelegenheidoverzichtKaartWidget(),
+                                                      );
+                                                    }),
+                                                  ),
+                                                ),
+                                          ][index]();
+                                        },
+                                      );
+                                    },
+                                  ),
+                                ),
+                                Container(
+                                  width: 200.0,
+                                  child: TextFormField(
+                                    controller: _model.textController2,
+                                    focusNode: _model.textFieldFocusNode2,
+                                    autofocus: false,
+                                    enabled: true,
+                                    obscureText: false,
+                                    decoration: InputDecoration(
+                                      isDense: true,
+                                      labelStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      hintText:
+                                          FFLocalizations.of(context).getText(
+                                        '4hoz3fa1' /* TextField */,
+                                      ),
+                                      hintStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      enabledBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
                                         ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
                                       ),
-                                    ],
-                                  );
-                                } else {
-                                  return Container(
-                                    width: 100.0,
-                                    height: 100.0,
-                                    decoration: BoxDecoration(
-                                      color: FlutterFlowTheme.of(context)
+                                      focusedBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      errorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedErrorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      filled: true,
+                                      fillColor: FlutterFlowTheme.of(context)
                                           .secondaryBackground,
                                     ),
-                                  );
-                                }
-                              },
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            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,
+                                        ),
+                                    cursorColor: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    enableInteractiveSelection: true,
+                                    validator: _model.textController2Validator
+                                        .asValidator(context),
+                                  ),
+                                ),
+                              ],
                             ),
                             Builder(
                               builder: (context) {
@@ -1622,6 +1840,106 @@ class _HorecagelegenhedenOverzichtWidgetState
                   ),
                 ),
               ),
+              Container(
+                width: 200.0,
+                child: TextFormField(
+                  controller: _model.textController3,
+                  focusNode: _model.textFieldFocusNode3,
+                  autofocus: false,
+                  enabled: true,
+                  obscureText: false,
+                  decoration: InputDecoration(
+                    isDense: true,
+                    labelStyle:
+                        FlutterFlowTheme.of(context).labelMedium.override(
+                              font: GoogleFonts.inter(
+                                fontWeight: FlutterFlowTheme.of(context)
+                                    .labelMedium
+                                    .fontWeight,
+                                fontStyle: FlutterFlowTheme.of(context)
+                                    .labelMedium
+                                    .fontStyle,
+                              ),
+                              letterSpacing: 0.0,
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .labelMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .labelMedium
+                                  .fontStyle,
+                            ),
+                    hintText: FFLocalizations.of(context).getText(
+                      'w8fjvz5a' /* TextField */,
+                    ),
+                    hintStyle:
+                        FlutterFlowTheme.of(context).labelMedium.override(
+                              font: GoogleFonts.inter(
+                                fontWeight: FlutterFlowTheme.of(context)
+                                    .labelMedium
+                                    .fontWeight,
+                                fontStyle: FlutterFlowTheme.of(context)
+                                    .labelMedium
+                                    .fontStyle,
+                              ),
+                              letterSpacing: 0.0,
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .labelMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .labelMedium
+                                  .fontStyle,
+                            ),
+                    enabledBorder: OutlineInputBorder(
+                      borderSide: BorderSide(
+                        color: Color(0x00000000),
+                        width: 1.0,
+                      ),
+                      borderRadius: BorderRadius.circular(8.0),
+                    ),
+                    focusedBorder: OutlineInputBorder(
+                      borderSide: BorderSide(
+                        color: Color(0x00000000),
+                        width: 1.0,
+                      ),
+                      borderRadius: BorderRadius.circular(8.0),
+                    ),
+                    errorBorder: OutlineInputBorder(
+                      borderSide: BorderSide(
+                        color: FlutterFlowTheme.of(context).error,
+                        width: 1.0,
+                      ),
+                      borderRadius: BorderRadius.circular(8.0),
+                    ),
+                    focusedErrorBorder: OutlineInputBorder(
+                      borderSide: BorderSide(
+                        color: FlutterFlowTheme.of(context).error,
+                        width: 1.0,
+                      ),
+                      borderRadius: BorderRadius.circular(8.0),
+                    ),
+                    filled: true,
+                    fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+                  ),
+                  style: FlutterFlowTheme.of(context).bodyMedium.override(
+                        font: GoogleFonts.inter(
+                          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,
+                      ),
+                  cursorColor: FlutterFlowTheme.of(context).primaryText,
+                  enableInteractiveSelection: true,
+                  validator:
+                      _model.textController3Validator.asValidator(context),
+                ),
+              ),
             ],
           ),
         ),

+ 693 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy/horecagelegenheden_overzicht_copy_model.dart

@@ -0,0 +1,693 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+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 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/index.dart';
+import 'horecagelegenheden_overzicht_copy_widget.dart'
+    show HorecagelegenhedenOverzichtCopyWidget;
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class HorecagelegenhedenOverzichtCopyModel
+    extends FlutterFlowModel<HorecagelegenhedenOverzichtCopyWidget> {
+  ///  Local state fields for this page.
+
+  bool _tabCultuurGeladen = false;
+  set tabCultuurGeladen(bool value) {
+    _tabCultuurGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabCultuurGeladen => _tabCultuurGeladen;
+
+  bool _tabEetgelegenhedenGeladen = false;
+  set tabEetgelegenhedenGeladen(bool value) {
+    _tabEetgelegenhedenGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabEetgelegenhedenGeladen => _tabEetgelegenhedenGeladen;
+
+  bool _tabOvernachtenGeladen = false;
+  set tabOvernachtenGeladen(bool value) {
+    _tabOvernachtenGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabOvernachtenGeladen => _tabOvernachtenGeladen;
+
+  bool _tabUitgaanGeladen = false;
+  set tabUitgaanGeladen(bool value) {
+    _tabUitgaanGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabUitgaanGeladen => _tabUitgaanGeladen;
+
+  bool _tabVerhuurcateringGeladen = false;
+  set tabVerhuurcateringGeladen(bool value) {
+    _tabVerhuurcateringGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabVerhuurcateringGeladen => _tabVerhuurcateringGeladen;
+
+  String? _zoektermActiviteiten;
+  set zoektermActiviteiten(String? value) {
+    _zoektermActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermActiviteiten => _zoektermActiviteiten;
+
+  String? _zoektermCultuur;
+  set zoektermCultuur(String? value) {
+    _zoektermCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermCultuur => _zoektermCultuur;
+
+  String? _zoektermEetgelegenheden;
+  set zoektermEetgelegenheden(String? value) {
+    _zoektermEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermEetgelegenheden => _zoektermEetgelegenheden;
+
+  String? _zoektermOvernachten;
+  set zoektermOvernachten(String? value) {
+    _zoektermOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermOvernachten => _zoektermOvernachten;
+
+  String? _zoektermUitgaan;
+  set zoektermUitgaan(String? value) {
+    _zoektermUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermUitgaan => _zoektermUitgaan;
+
+  String? _zoektermVerhuurCatering;
+  set zoektermVerhuurCatering(String? value) {
+    _zoektermVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermVerhuurCatering => _zoektermVerhuurCatering;
+
+  String? _categorieFilterActiviteiten;
+  set categorieFilterActiviteiten(String? value) {
+    _categorieFilterActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterActiviteiten => _categorieFilterActiviteiten;
+
+  String? _categorieFilterCultuur;
+  set categorieFilterCultuur(String? value) {
+    _categorieFilterCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterCultuur => _categorieFilterCultuur;
+
+  String? _categorieFilterEetgelegenheden;
+  set categorieFilterEetgelegenheden(String? value) {
+    _categorieFilterEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterEetgelegenheden => _categorieFilterEetgelegenheden;
+
+  String? _categorieFilterOvernachten;
+  set categorieFilterOvernachten(String? value) {
+    _categorieFilterOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterOvernachten => _categorieFilterOvernachten;
+
+  String? _categorieFilterUitgaan;
+  set categorieFilterUitgaan(String? value) {
+    _categorieFilterUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterUitgaan => _categorieFilterUitgaan;
+
+  String? _categorieFilterVerhuurCatering;
+  set categorieFilterVerhuurCatering(String? value) {
+    _categorieFilterVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterVerhuurCatering => _categorieFilterVerhuurCatering;
+
+  late LoggableList<dynamic> _alleActiviteiten = LoggableList([]);
+  set alleActiviteiten(List<dynamic> value) {
+    if (value != null) {
+      _alleActiviteiten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleActiviteiten =>
+      _alleActiviteiten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleActiviteiten(dynamic item) => alleActiviteiten.add(item);
+  void removeFromAlleActiviteiten(dynamic item) =>
+      alleActiviteiten.remove(item);
+  void removeAtIndexFromAlleActiviteiten(int index) =>
+      alleActiviteiten.removeAt(index);
+  void insertAtIndexInAlleActiviteiten(int index, dynamic item) =>
+      alleActiviteiten.insert(index, item);
+  void updateAlleActiviteitenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleActiviteiten[index] = updateFn(alleActiviteiten[index]);
+
+  late LoggableList<dynamic> _alleCultuur = LoggableList([]);
+  set alleCultuur(List<dynamic> value) {
+    if (value != null) {
+      _alleCultuur = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleCultuur =>
+      _alleCultuur?..logger = () => debugLogWidgetClass(this);
+  void addToAlleCultuur(dynamic item) => alleCultuur.add(item);
+  void removeFromAlleCultuur(dynamic item) => alleCultuur.remove(item);
+  void removeAtIndexFromAlleCultuur(int index) => alleCultuur.removeAt(index);
+  void insertAtIndexInAlleCultuur(int index, dynamic item) =>
+      alleCultuur.insert(index, item);
+  void updateAlleCultuurAtIndex(int index, Function(dynamic) updateFn) =>
+      alleCultuur[index] = updateFn(alleCultuur[index]);
+
+  late LoggableList<dynamic> _alleEetgelegenheden = LoggableList([]);
+  set alleEetgelegenheden(List<dynamic> value) {
+    if (value != null) {
+      _alleEetgelegenheden = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleEetgelegenheden =>
+      _alleEetgelegenheden?..logger = () => debugLogWidgetClass(this);
+  void addToAlleEetgelegenheden(dynamic item) => alleEetgelegenheden.add(item);
+  void removeFromAlleEetgelegenheden(dynamic item) =>
+      alleEetgelegenheden.remove(item);
+  void removeAtIndexFromAlleEetgelegenheden(int index) =>
+      alleEetgelegenheden.removeAt(index);
+  void insertAtIndexInAlleEetgelegenheden(int index, dynamic item) =>
+      alleEetgelegenheden.insert(index, item);
+  void updateAlleEetgelegenhedenAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleEetgelegenheden[index] = updateFn(alleEetgelegenheden[index]);
+
+  late LoggableList<dynamic> _alleOvernachten = LoggableList([]);
+  set alleOvernachten(List<dynamic> value) {
+    if (value != null) {
+      _alleOvernachten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleOvernachten =>
+      _alleOvernachten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleOvernachten(dynamic item) => alleOvernachten.add(item);
+  void removeFromAlleOvernachten(dynamic item) => alleOvernachten.remove(item);
+  void removeAtIndexFromAlleOvernachten(int index) =>
+      alleOvernachten.removeAt(index);
+  void insertAtIndexInAlleOvernachten(int index, dynamic item) =>
+      alleOvernachten.insert(index, item);
+  void updateAlleOvernachtenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleOvernachten[index] = updateFn(alleOvernachten[index]);
+
+  late LoggableList<dynamic> _alleUitgaan = LoggableList([]);
+  set alleUitgaan(List<dynamic> value) {
+    if (value != null) {
+      _alleUitgaan = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleUitgaan =>
+      _alleUitgaan?..logger = () => debugLogWidgetClass(this);
+  void addToAlleUitgaan(dynamic item) => alleUitgaan.add(item);
+  void removeFromAlleUitgaan(dynamic item) => alleUitgaan.remove(item);
+  void removeAtIndexFromAlleUitgaan(int index) => alleUitgaan.removeAt(index);
+  void insertAtIndexInAlleUitgaan(int index, dynamic item) =>
+      alleUitgaan.insert(index, item);
+  void updateAlleUitgaanAtIndex(int index, Function(dynamic) updateFn) =>
+      alleUitgaan[index] = updateFn(alleUitgaan[index]);
+
+  late LoggableList<dynamic> _alleVerhuurCatering = LoggableList([]);
+  set alleVerhuurCatering(List<dynamic> value) {
+    if (value != null) {
+      _alleVerhuurCatering = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleVerhuurCatering =>
+      _alleVerhuurCatering?..logger = () => debugLogWidgetClass(this);
+  void addToAlleVerhuurCatering(dynamic item) => alleVerhuurCatering.add(item);
+  void removeFromAlleVerhuurCatering(dynamic item) =>
+      alleVerhuurCatering.remove(item);
+  void removeAtIndexFromAlleVerhuurCatering(int index) =>
+      alleVerhuurCatering.removeAt(index);
+  void insertAtIndexInAlleVerhuurCatering(int index, dynamic item) =>
+      alleVerhuurCatering.insert(index, item);
+  void updateAlleVerhuurCateringAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleVerhuurCatering[index] = updateFn(alleVerhuurCatering[index]);
+
+  ///  State fields for stateful widgets in this page.
+
+  // State field(s) for TabBar widget.
+  TabController? tabBarController;
+  int get tabBarCurrentIndex =>
+      tabBarController != null ? tabBarController!.index : 0;
+  int get tabBarPreviousIndex =>
+      tabBarController != null ? tabBarController!.previousIndex : 0;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels1 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabCultuur widget.
+  List<dynamic>? _resultHorecaCultuur;
+  set resultHorecaCultuur(List<dynamic>? value) {
+    _resultHorecaCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaCultuur => _resultHorecaCultuur;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels2 = {};
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels3 = {};
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels4 = {};
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels5 = {};
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels6 = {};
+  // Model for HeaderButtonsComponent component.
+  late HeaderButtonsComponentModel headerButtonsComponentModel;
+  // Model for drawerComponent component.
+  late DrawerComponentModel drawerComponentModel;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {
+    headerButtonsComponentModel =
+        createModel(context, () => HeaderButtonsComponentModel());
+    drawerComponentModel = createModel(context, () => DrawerComponentModel());
+
+    debugLogWidgetClass(this);
+  }
+
+  @override
+  void dispose() {
+    tabBarController?.dispose();
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
+  }
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=ShgKEAoGcGxhYXRzEgYzcXVrMXVyBAgDIAFQAVoGcGxhYXRz',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        localStates: {
+          'tabCultuurGeladen': debugSerializeParam(
+            tabCultuurGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QisKGgoRdGFiQ3VsdHV1ckdlbGFkZW4SBWk5eTl0KgcSBWZhbHNlcgQIBSABUAFaEXRhYkN1bHR1dXJHZWxhZGVuYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabEetgelegenhedenGeladen': debugSerializeParam(
+            tabEetgelegenhedenGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QjMKIgoZdGFiRWV0Z2VsZWdlbmhlZGVuR2VsYWRlbhIFNmE5djgqBxIFZmFsc2VyBAgFIAFQAVoZdGFiRWV0Z2VsZWdlbmhlZGVuR2VsYWRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabOvernachtenGeladen': debugSerializeParam(
+            tabOvernachtenGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=Qi8KHgoVdGFiT3Zlcm5hY2h0ZW5HZWxhZGVuEgU1eGM2NioHEgVmYWxzZXIECAUgAVABWhV0YWJPdmVybmFjaHRlbkdlbGFkZW5iH0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHk=',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabUitgaanGeladen': debugSerializeParam(
+            tabUitgaanGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QisKGgoRdGFiVWl0Z2FhbkdlbGFkZW4SBTE1NWxkKgcSBWZhbHNlcgQIBSABUAFaEXRhYlVpdGdhYW5HZWxhZGVuYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabVerhuurcateringGeladen': debugSerializeParam(
+            tabVerhuurcateringGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QjMKIgoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbhIFMWU3eHEqBxIFZmFsc2VyBAgFIAFQAVoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'zoektermActiviteiten': debugSerializeParam(
+            zoektermActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QikKHQoUem9la3Rlcm1BY3Rpdml0ZWl0ZW4SBTZqYTVtKgISAHIECAMgAFABWhR6b2VrdGVybUFjdGl2aXRlaXRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermCultuur': debugSerializeParam(
+            zoektermCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1DdWx0dXVyEgVqdXA4aSoCEgByBAgDIABQAVoPem9la3Rlcm1DdWx0dXVyYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermEetgelegenheden': debugSerializeParam(
+            zoektermEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1FZXRnZWxlZ2VuaGVkZW4SBXh0b2VlKgISAHIECAMgAFABWhd6b2VrdGVybUVldGdlbGVnZW5oZWRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermOvernachten': debugSerializeParam(
+            zoektermOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QigKHAoTem9la3Rlcm1PdmVybmFjaHRlbhIFcXdicHAqAhIAcgQIAyAAUAFaE3pvZWt0ZXJtT3Zlcm5hY2h0ZW5iH0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermUitgaan': debugSerializeParam(
+            zoektermUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1VaXRnYWFuEgVreHptaSoCEgByBAgDIABQAVoPem9la3Rlcm1VaXRnYWFuYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermVerhuurCatering': debugSerializeParam(
+            zoektermVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1WZXJodXVyQ2F0ZXJpbmcSBWd6eHcwKgISAHIECAMgAFABWhd6b2VrdGVybVZlcmh1dXJDYXRlcmluZ2IfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterActiviteiten': debugSerializeParam(
+            categorieFilterActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QjAKJAobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuEgVieDgwOSoCEgByBAgDIABQAVobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterCultuur': debugSerializeParam(
+            categorieFilterCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyQ3VsdHV1chIFdXA3d2kqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlckN1bHR1dXJiH0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterEetgelegenheden': debugSerializeParam(
+            categorieFilterEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuEgVsa2dwayoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterOvernachten': debugSerializeParam(
+            categorieFilterOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=Qi8KIwoaY2F0ZWdvcmllRmlsdGVyT3Zlcm5hY2h0ZW4SBTQ2dG1nKgISAHIECAMgAFABWhpjYXRlZ29yaWVGaWx0ZXJPdmVybmFjaHRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterUitgaan': debugSerializeParam(
+            categorieFilterUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyVWl0Z2FhbhIFY2NveHEqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlclVpdGdhYW5iH0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterVerhuurCatering': debugSerializeParam(
+            categorieFilterVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nEgVxc3U3OCoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'alleActiviteiten': debugSerializeParam(
+            alleActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiEKGQoQYWxsZUFjdGl2aXRlaXRlbhIFdTN0cXRyBBICCAlQAVoQYWxsZUFjdGl2aXRlaXRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleCultuur': debugSerializeParam(
+            alleCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QhwKFAoLYWxsZUN1bHR1dXISBWltMWR5cgQSAggJUAFaC2FsbGVDdWx0dXVyYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleEetgelegenheden': debugSerializeParam(
+            alleEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiQKHAoTYWxsZUVldGdlbGVnZW5oZWRlbhIFZWEzd2pyBBICCAlQAVoTYWxsZUVldGdlbGVnZW5oZWRlbmIfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleOvernachten': debugSerializeParam(
+            alleOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiAKGAoPYWxsZU92ZXJuYWNodGVuEgVtdnk1OXIEEgIICVABWg9hbGxlT3Zlcm5hY2h0ZW5iH0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHk=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleUitgaan': debugSerializeParam(
+            alleUitgaan,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QhwKFAoLYWxsZVVpdGdhYW4SBTN6NHFmcgQSAggJUAFaC2FsbGVVaXRnYWFuYh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleVerhuurCatering': debugSerializeParam(
+            alleVerhuurCatering,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            searchReference:
+                'reference=QiQKHAoTYWxsZVZlcmh1dXJDYXRlcmluZxIFd2tlcWVyBBICCAlQAVoTYWxsZVZlcmh1dXJDYXRlcmluZ2IfSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weQ==',
+            name: 'dynamic',
+            nullable: false,
+          )
+        }.entries,
+        widgetStates: {
+          'tabBarCurrentIndex': debugSerializeParam(
+            tabBarCurrentIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            name: 'int',
+            nullable: true,
+          ),
+          'tabBarPreviousIndex': debugSerializeParam(
+            tabBarPreviousIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            name: 'int',
+            nullable: true,
+          )
+        }.entries,
+        actionOutputs: {
+          'resultHorecaCultuur': debugSerializeParam(
+            resultHorecaCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'horecagelegenheidoverzichtKaartModels1 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels1.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels1.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels2 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels2.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels2.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels3 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels3.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels3.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels4 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels4.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels4.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels5 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels5.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels5.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels6 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels6.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels6.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+        searchReference:
+            'reference=Oh9Ib3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5UAFaH0hvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHk=',
+        widgetClassName: 'HorecagelegenhedenOverzichtCopy',
+      );
+}

+ 1644 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy/horecagelegenheden_overzicht_copy_widget.dart

@@ -0,0 +1,1644 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+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 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/index.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'horecagelegenheden_overzicht_copy_model.dart';
+export 'horecagelegenheden_overzicht_copy_model.dart';
+
+class HorecagelegenhedenOverzichtCopyWidget extends StatefulWidget {
+  const HorecagelegenhedenOverzichtCopyWidget({
+    super.key,
+    required this.plaats,
+  });
+
+  final String? plaats;
+
+  static String routeName = 'HorecagelegenhedenOverzichtCopy';
+  static String routePath = '/horecagelegenhedenOverzichtCopy';
+
+  @override
+  State<HorecagelegenhedenOverzichtCopyWidget> createState() =>
+      _HorecagelegenhedenOverzichtCopyWidgetState();
+}
+
+class _HorecagelegenhedenOverzichtCopyWidgetState
+    extends State<HorecagelegenhedenOverzichtCopyWidget>
+    with TickerProviderStateMixin, RouteAware {
+  late HorecagelegenhedenOverzichtCopyModel _model;
+
+  final scaffoldKey = GlobalKey<ScaffoldState>();
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => HorecagelegenhedenOverzichtCopyModel());
+
+    _model.tabBarController = TabController(
+      vsync: this,
+      length: 6,
+      initialIndex: 0,
+    )
+      ..addListener(() => safeSetState(() {}))
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.dispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HorecagelegenhedenOverzichtCopyWidget 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);
+    context.watch<FFAppState>();
+    _model.horecagelegenheidoverzichtKaartModels1.clear();
+    _model.horecagelegenheidoverzichtKaartModels2.clear();
+    _model.horecagelegenheidoverzichtKaartModels3.clear();
+    _model.horecagelegenheidoverzichtKaartModels4.clear();
+    _model.horecagelegenheidoverzichtKaartModels5.clear();
+    _model.horecagelegenheidoverzichtKaartModels6.clear();
+
+    return GestureDetector(
+      onTap: () {
+        FocusScope.of(context).unfocus();
+        FocusManager.instance.primaryFocus?.unfocus();
+      },
+      child: Scaffold(
+        key: scaffoldKey,
+        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+        drawer: Drawer(
+          elevation: 16.0,
+          child: wrapWithModel(
+            model: _model.drawerComponentModel,
+            updateCallback: () => safeSetState(() {}),
+            child: Builder(builder: (_) {
+              return DebugFlutterFlowModelContext(
+                rootModel: _model.rootModel,
+                child: DrawerComponentWidget(),
+              );
+            }),
+          ),
+        ),
+        appBar: PreferredSize(
+          preferredSize: Size.fromHeight(80.0),
+          child: AppBar(
+            backgroundColor: FlutterFlowTheme.of(context).info,
+            iconTheme: IconThemeData(color: Color(0xFFB12727)),
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(),
+                  );
+                }),
+              ),
+              centerTitle: true,
+              expandedTitleScale: 1.0,
+            ),
+            bottom: PreferredSize(
+              preferredSize: Size.fromHeight(70.0),
+              child: Container(),
+            ),
+            toolbarHeight: MediaQuery.sizeOf(context).height * 0.25,
+            elevation: 2.0,
+          ),
+        ),
+        body: SafeArea(
+          top: true,
+          child: Column(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Expanded(
+                child: Container(
+                  decoration: BoxDecoration(
+                    boxShadow: [
+                      BoxShadow(
+                        blurRadius: 4.0,
+                        color: Color(0x33000000),
+                        offset: Offset(
+                          0.0,
+                          2.0,
+                        ),
+                      )
+                    ],
+                  ),
+                  child: Column(
+                    children: [
+                      Align(
+                        alignment: Alignment(-1.0, 0),
+                        child: TabBar(
+                          isScrollable: true,
+                          tabAlignment: TabAlignment.start,
+                          labelColor: FlutterFlowTheme.of(context).primaryText,
+                          unselectedLabelColor:
+                              FlutterFlowTheme.of(context).secondaryText,
+                          labelStyle:
+                              FlutterFlowTheme.of(context).titleMedium.override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontStyle,
+                                  ),
+                          unselectedLabelStyle:
+                              FlutterFlowTheme.of(context).titleMedium.override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontStyle,
+                                  ),
+                          indicatorColor: FlutterFlowTheme.of(context).primary,
+                          tabs: [
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '9h6jfdei' /* Activiteiten */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'pnygpwks' /* Cultuur */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'c7r33qpa' /* Eetgelegenheden */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '9q9aqxds' /* Overnachten */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'o3glxp3t' /* Uitgaan */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'xxlt4qbt' /* Verhuur, catering */,
+                              ),
+                            ),
+                          ],
+                          controller: _model.tabBarController,
+                          onTap: (i) async {
+                            [
+                              () async {},
+                              () async {
+                                _model.tabVerhuurcateringGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaCultuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17963',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleCultuur = _model.resultHorecaCultuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabEetgelegenhedenGeladen = true;
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabOvernachtenGeladen = true;
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabUitgaanGeladen = true;
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabVerhuurcateringGeladen = true;
+                                safeSetState(() {});
+                              }
+                            ][i]();
+                          },
+                        ),
+                      ),
+                      Expanded(
+                        child: TabBarView(
+                          controller: _model.tabBarController,
+                          children: [
+                            Column(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Expanded(
+                                  child: FutureBuilder<ApiCallResponse>(
+                                    future: HorecagelegenheidoverzichtCall.call(
+                                      horcat: '17969',
+                                      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: Color(0xFFB1061E),
+                                              size: 80.0,
+                                            ),
+                                          ),
+                                        );
+                                      }
+                                      final staggeredViewHorecagelegenheidoverzichtResponse =
+                                          snapshot.data!;
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_8ho4g1ar'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .statusCode,
+                                        ParamType.int,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                        name: 'int',
+                                        nullable: false,
+                                      );
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_8ho4g1ar'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .bodyText,
+                                        ParamType.String,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                        name: 'String',
+                                        nullable: false,
+                                      );
+                                      debugLogWidgetClass(_model);
+
+                                      return Builder(
+                                        builder: (context) {
+                                          final horecagelegenheden =
+                                              getJsonField(
+                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                .jsonBody,
+                                            r'''$''',
+                                          ).toList().take(25).toList();
+                                          _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=HorecagelegenhedenOverzichtCopy',
+                                            name: 'dynamic',
+                                            nullable: false,
+                                          );
+                                          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(
+                                                            horecagelegenhedenItem,
+                                                            r'''$.nid''',
+                                                          ).toString(),
+                                                          ParamType.String,
+                                                        ),
+                                                      }.withoutNulls,
+                                                    );
+                                                  },
+                                                  child: Builder(builder: (_) {
+                                                    return DebugFlutterFlowModelContext(
+                                                      rootModel:
+                                                          _model.rootModel,
+                                                      parentModelCallback: (m) {
+                                                        _model.horecagelegenheidoverzichtKaartModels1[
+                                                            'Keyf2t_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                      },
+                                                      child:
+                                                          HorecagelegenheidoverzichtKaartWidget(
+                                                        key: Key(
+                                                            'Keyf2t_${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>(),
+                                                      ),
+                                                    );
+                                                  }),
+                                                ),
+                                              );
+                                            },
+                                          );
+                                        },
+                                      );
+                                    },
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabCultuurGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17963',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_awkysuaa'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_awkysuaa'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels2[
+                                                                  'Keyau4_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyau4_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabEetgelegenhedenGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '34',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_huunm506'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_huunm506'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels3[
+                                                                  'Keyyzf_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyyzf_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabOvernachtenGeladen) {
+                                  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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_5cj7ol2h'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_5cj7ol2h'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels4[
+                                                                  'Key2oq_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Key2oq_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabUitgaanGeladen) {
+                                  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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_om2gu8a4'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_om2gu8a4'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels5[
+                                                                  'Keyuea_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyuea_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabVerhuurcateringGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17968',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_m8ob788s'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_m8ob788s'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels6[
+                                                                  'Keyon6_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyon6_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                          ],
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 801 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2/horecagelegenheden_overzicht_copy2_model.dart

@@ -0,0 +1,801 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+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 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/index.dart';
+import 'horecagelegenheden_overzicht_copy2_widget.dart'
+    show HorecagelegenhedenOverzichtCopy2Widget;
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class HorecagelegenhedenOverzichtCopy2Model
+    extends FlutterFlowModel<HorecagelegenhedenOverzichtCopy2Widget> {
+  ///  Local state fields for this page.
+
+  bool _tabCultuurGeladen = false;
+  set tabCultuurGeladen(bool value) {
+    _tabCultuurGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabCultuurGeladen => _tabCultuurGeladen;
+
+  bool _tabEetgelegenhedenGeladen = false;
+  set tabEetgelegenhedenGeladen(bool value) {
+    _tabEetgelegenhedenGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabEetgelegenhedenGeladen => _tabEetgelegenhedenGeladen;
+
+  bool _tabOvernachtenGeladen = false;
+  set tabOvernachtenGeladen(bool value) {
+    _tabOvernachtenGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabOvernachtenGeladen => _tabOvernachtenGeladen;
+
+  bool _tabUitgaanGeladen = false;
+  set tabUitgaanGeladen(bool value) {
+    _tabUitgaanGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabUitgaanGeladen => _tabUitgaanGeladen;
+
+  bool _tabVerhuurcateringGeladen = false;
+  set tabVerhuurcateringGeladen(bool value) {
+    _tabVerhuurcateringGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabVerhuurcateringGeladen => _tabVerhuurcateringGeladen;
+
+  String? _zoektermActiviteiten;
+  set zoektermActiviteiten(String? value) {
+    _zoektermActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermActiviteiten => _zoektermActiviteiten;
+
+  String? _zoektermCultuur;
+  set zoektermCultuur(String? value) {
+    _zoektermCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermCultuur => _zoektermCultuur;
+
+  String? _zoektermEetgelegenheden;
+  set zoektermEetgelegenheden(String? value) {
+    _zoektermEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermEetgelegenheden => _zoektermEetgelegenheden;
+
+  String? _zoektermOvernachten;
+  set zoektermOvernachten(String? value) {
+    _zoektermOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermOvernachten => _zoektermOvernachten;
+
+  String? _zoektermUitgaan;
+  set zoektermUitgaan(String? value) {
+    _zoektermUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermUitgaan => _zoektermUitgaan;
+
+  String? _zoektermVerhuurCatering;
+  set zoektermVerhuurCatering(String? value) {
+    _zoektermVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermVerhuurCatering => _zoektermVerhuurCatering;
+
+  String? _categorieFilterActiviteiten;
+  set categorieFilterActiviteiten(String? value) {
+    _categorieFilterActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterActiviteiten => _categorieFilterActiviteiten;
+
+  String? _categorieFilterCultuur;
+  set categorieFilterCultuur(String? value) {
+    _categorieFilterCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterCultuur => _categorieFilterCultuur;
+
+  String? _categorieFilterEetgelegenheden;
+  set categorieFilterEetgelegenheden(String? value) {
+    _categorieFilterEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterEetgelegenheden => _categorieFilterEetgelegenheden;
+
+  String? _categorieFilterOvernachten;
+  set categorieFilterOvernachten(String? value) {
+    _categorieFilterOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterOvernachten => _categorieFilterOvernachten;
+
+  String? _categorieFilterUitgaan;
+  set categorieFilterUitgaan(String? value) {
+    _categorieFilterUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterUitgaan => _categorieFilterUitgaan;
+
+  String? _categorieFilterVerhuurCatering;
+  set categorieFilterVerhuurCatering(String? value) {
+    _categorieFilterVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterVerhuurCatering => _categorieFilterVerhuurCatering;
+
+  late LoggableList<dynamic> _alleActiviteiten = LoggableList([]);
+  set alleActiviteiten(List<dynamic> value) {
+    if (value != null) {
+      _alleActiviteiten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleActiviteiten =>
+      _alleActiviteiten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleActiviteiten(dynamic item) => alleActiviteiten.add(item);
+  void removeFromAlleActiviteiten(dynamic item) =>
+      alleActiviteiten.remove(item);
+  void removeAtIndexFromAlleActiviteiten(int index) =>
+      alleActiviteiten.removeAt(index);
+  void insertAtIndexInAlleActiviteiten(int index, dynamic item) =>
+      alleActiviteiten.insert(index, item);
+  void updateAlleActiviteitenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleActiviteiten[index] = updateFn(alleActiviteiten[index]);
+
+  late LoggableList<dynamic> _alleCultuur = LoggableList([]);
+  set alleCultuur(List<dynamic> value) {
+    if (value != null) {
+      _alleCultuur = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleCultuur =>
+      _alleCultuur?..logger = () => debugLogWidgetClass(this);
+  void addToAlleCultuur(dynamic item) => alleCultuur.add(item);
+  void removeFromAlleCultuur(dynamic item) => alleCultuur.remove(item);
+  void removeAtIndexFromAlleCultuur(int index) => alleCultuur.removeAt(index);
+  void insertAtIndexInAlleCultuur(int index, dynamic item) =>
+      alleCultuur.insert(index, item);
+  void updateAlleCultuurAtIndex(int index, Function(dynamic) updateFn) =>
+      alleCultuur[index] = updateFn(alleCultuur[index]);
+
+  late LoggableList<dynamic> _alleEetgelegenheden = LoggableList([]);
+  set alleEetgelegenheden(List<dynamic> value) {
+    if (value != null) {
+      _alleEetgelegenheden = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleEetgelegenheden =>
+      _alleEetgelegenheden?..logger = () => debugLogWidgetClass(this);
+  void addToAlleEetgelegenheden(dynamic item) => alleEetgelegenheden.add(item);
+  void removeFromAlleEetgelegenheden(dynamic item) =>
+      alleEetgelegenheden.remove(item);
+  void removeAtIndexFromAlleEetgelegenheden(int index) =>
+      alleEetgelegenheden.removeAt(index);
+  void insertAtIndexInAlleEetgelegenheden(int index, dynamic item) =>
+      alleEetgelegenheden.insert(index, item);
+  void updateAlleEetgelegenhedenAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleEetgelegenheden[index] = updateFn(alleEetgelegenheden[index]);
+
+  late LoggableList<dynamic> _alleOvernachten = LoggableList([]);
+  set alleOvernachten(List<dynamic> value) {
+    if (value != null) {
+      _alleOvernachten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleOvernachten =>
+      _alleOvernachten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleOvernachten(dynamic item) => alleOvernachten.add(item);
+  void removeFromAlleOvernachten(dynamic item) => alleOvernachten.remove(item);
+  void removeAtIndexFromAlleOvernachten(int index) =>
+      alleOvernachten.removeAt(index);
+  void insertAtIndexInAlleOvernachten(int index, dynamic item) =>
+      alleOvernachten.insert(index, item);
+  void updateAlleOvernachtenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleOvernachten[index] = updateFn(alleOvernachten[index]);
+
+  late LoggableList<dynamic> _alleUitgaan = LoggableList([]);
+  set alleUitgaan(List<dynamic> value) {
+    if (value != null) {
+      _alleUitgaan = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleUitgaan =>
+      _alleUitgaan?..logger = () => debugLogWidgetClass(this);
+  void addToAlleUitgaan(dynamic item) => alleUitgaan.add(item);
+  void removeFromAlleUitgaan(dynamic item) => alleUitgaan.remove(item);
+  void removeAtIndexFromAlleUitgaan(int index) => alleUitgaan.removeAt(index);
+  void insertAtIndexInAlleUitgaan(int index, dynamic item) =>
+      alleUitgaan.insert(index, item);
+  void updateAlleUitgaanAtIndex(int index, Function(dynamic) updateFn) =>
+      alleUitgaan[index] = updateFn(alleUitgaan[index]);
+
+  late LoggableList<dynamic> _alleVerhuurCatering = LoggableList([]);
+  set alleVerhuurCatering(List<dynamic> value) {
+    if (value != null) {
+      _alleVerhuurCatering = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleVerhuurCatering =>
+      _alleVerhuurCatering?..logger = () => debugLogWidgetClass(this);
+  void addToAlleVerhuurCatering(dynamic item) => alleVerhuurCatering.add(item);
+  void removeFromAlleVerhuurCatering(dynamic item) =>
+      alleVerhuurCatering.remove(item);
+  void removeAtIndexFromAlleVerhuurCatering(int index) =>
+      alleVerhuurCatering.removeAt(index);
+  void insertAtIndexInAlleVerhuurCatering(int index, dynamic item) =>
+      alleVerhuurCatering.insert(index, item);
+  void updateAlleVerhuurCateringAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleVerhuurCatering[index] = updateFn(alleVerhuurCatering[index]);
+
+  ///  State fields for stateful widgets in this page.
+
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in HorecagelegenhedenOverzichtCopy2 widget.
+  List<dynamic>? _resultHorecaActiviteiten;
+  set resultHorecaActiviteiten(List<dynamic>? value) {
+    _resultHorecaActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaActiviteiten => _resultHorecaActiviteiten;
+
+  // State field(s) for TabBar widget.
+  TabController? tabBarController;
+  int get tabBarCurrentIndex =>
+      tabBarController != null ? tabBarController!.index : 0;
+  int get tabBarPreviousIndex =>
+      tabBarController != null ? tabBarController!.previousIndex : 0;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels1 = {};
+  // State field(s) for TextField widget.
+  FocusNode? textFieldFocusNode;
+  TextEditingController? textController;
+  String? Function(BuildContext, String?)? textControllerValidator;
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabCultuur widget.
+  List<dynamic>? _resultHorecaCultuur;
+  set resultHorecaCultuur(List<dynamic>? value) {
+    _resultHorecaCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaCultuur => _resultHorecaCultuur;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels2 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabEetgelegenheden widget.
+  List<dynamic>? _resultHorecaEetgelegenheden;
+  set resultHorecaEetgelegenheden(List<dynamic>? value) {
+    _resultHorecaEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaEetgelegenheden =>
+      _resultHorecaEetgelegenheden;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels3 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabOvernachten widget.
+  List<dynamic>? _resultHorecaOvernachten;
+  set resultHorecaOvernachten(List<dynamic>? value) {
+    _resultHorecaOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaOvernachten => _resultHorecaOvernachten;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels4 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabUitgaan widget.
+  List<dynamic>? _resultHorecaUitgaansgelegenheden;
+  set resultHorecaUitgaansgelegenheden(List<dynamic>? value) {
+    _resultHorecaUitgaansgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaUitgaansgelegenheden =>
+      _resultHorecaUitgaansgelegenheden;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels5 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabVerhuurCatering widget.
+  List<dynamic>? _resultHorecaVerhuur;
+  set resultHorecaVerhuur(List<dynamic>? value) {
+    _resultHorecaVerhuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaVerhuur => _resultHorecaVerhuur;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels6 = {};
+  // Model for HeaderButtonsComponent component.
+  late HeaderButtonsComponentModel headerButtonsComponentModel;
+  // Model for drawerComponent component.
+  late DrawerComponentModel drawerComponentModel;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {
+    headerButtonsComponentModel =
+        createModel(context, () => HeaderButtonsComponentModel());
+    drawerComponentModel = createModel(context, () => DrawerComponentModel());
+
+    debugLogWidgetClass(this);
+  }
+
+  @override
+  void dispose() {
+    tabBarController?.dispose();
+    textFieldFocusNode?.dispose();
+    textController?.dispose();
+
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
+  }
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=ShgKEAoGcGxhYXRzEgYzcXVrMXVyBAgDIAFQAVoGcGxhYXRz',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        localStates: {
+          'tabCultuurGeladen': debugSerializeParam(
+            tabCultuurGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QisKGgoRdGFiQ3VsdHV1ckdlbGFkZW4SBWk5eTl0KgcSBWZhbHNlcgQIBSABUAFaEXRhYkN1bHR1dXJHZWxhZGVuYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabEetgelegenhedenGeladen': debugSerializeParam(
+            tabEetgelegenhedenGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QjMKIgoZdGFiRWV0Z2VsZWdlbmhlZGVuR2VsYWRlbhIFNmE5djgqBxIFZmFsc2VyBAgFIAFQAVoZdGFiRWV0Z2VsZWdlbmhlZGVuR2VsYWRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabOvernachtenGeladen': debugSerializeParam(
+            tabOvernachtenGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=Qi8KHgoVdGFiT3Zlcm5hY2h0ZW5HZWxhZGVuEgU1eGM2NioHEgVmYWxzZXIECAUgAVABWhV0YWJPdmVybmFjaHRlbkdlbGFkZW5iIEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHky',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabUitgaanGeladen': debugSerializeParam(
+            tabUitgaanGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QisKGgoRdGFiVWl0Z2FhbkdlbGFkZW4SBTE1NWxkKgcSBWZhbHNlcgQIBSABUAFaEXRhYlVpdGdhYW5HZWxhZGVuYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabVerhuurcateringGeladen': debugSerializeParam(
+            tabVerhuurcateringGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QjMKIgoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbhIFMWU3eHEqBxIFZmFsc2VyBAgFIAFQAVoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'bool',
+            nullable: false,
+          ),
+          'zoektermActiviteiten': debugSerializeParam(
+            zoektermActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QikKHQoUem9la3Rlcm1BY3Rpdml0ZWl0ZW4SBTZqYTVtKgISAHIECAMgAFABWhR6b2VrdGVybUFjdGl2aXRlaXRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermCultuur': debugSerializeParam(
+            zoektermCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1DdWx0dXVyEgVqdXA4aSoCEgByBAgDIABQAVoPem9la3Rlcm1DdWx0dXVyYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermEetgelegenheden': debugSerializeParam(
+            zoektermEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1FZXRnZWxlZ2VuaGVkZW4SBXh0b2VlKgISAHIECAMgAFABWhd6b2VrdGVybUVldGdlbGVnZW5oZWRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermOvernachten': debugSerializeParam(
+            zoektermOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QigKHAoTem9la3Rlcm1PdmVybmFjaHRlbhIFcXdicHAqAhIAcgQIAyAAUAFaE3pvZWt0ZXJtT3Zlcm5hY2h0ZW5iIEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHky',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermUitgaan': debugSerializeParam(
+            zoektermUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1VaXRnYWFuEgVreHptaSoCEgByBAgDIABQAVoPem9la3Rlcm1VaXRnYWFuYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermVerhuurCatering': debugSerializeParam(
+            zoektermVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1WZXJodXVyQ2F0ZXJpbmcSBWd6eHcwKgISAHIECAMgAFABWhd6b2VrdGVybVZlcmh1dXJDYXRlcmluZ2IgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterActiviteiten': debugSerializeParam(
+            categorieFilterActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QjAKJAobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuEgVieDgwOSoCEgByBAgDIABQAVobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterCultuur': debugSerializeParam(
+            categorieFilterCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyQ3VsdHV1chIFdXA3d2kqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlckN1bHR1dXJiIEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHky',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterEetgelegenheden': debugSerializeParam(
+            categorieFilterEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuEgVsa2dwayoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterOvernachten': debugSerializeParam(
+            categorieFilterOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=Qi8KIwoaY2F0ZWdvcmllRmlsdGVyT3Zlcm5hY2h0ZW4SBTQ2dG1nKgISAHIECAMgAFABWhpjYXRlZ29yaWVGaWx0ZXJPdmVybmFjaHRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterUitgaan': debugSerializeParam(
+            categorieFilterUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyVWl0Z2FhbhIFY2NveHEqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlclVpdGdhYW5iIEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHky',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterVerhuurCatering': debugSerializeParam(
+            categorieFilterVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nEgVxc3U3OCoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'String',
+            nullable: true,
+          ),
+          'alleActiviteiten': debugSerializeParam(
+            alleActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiEKGQoQYWxsZUFjdGl2aXRlaXRlbhIFdTN0cXRyBBICCAlQAVoQYWxsZUFjdGl2aXRlaXRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleCultuur': debugSerializeParam(
+            alleCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QhwKFAoLYWxsZUN1bHR1dXISBWltMWR5cgQSAggJUAFaC2FsbGVDdWx0dXVyYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleEetgelegenheden': debugSerializeParam(
+            alleEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiQKHAoTYWxsZUVldGdlbGVnZW5oZWRlbhIFZWEzd2pyBBICCAlQAVoTYWxsZUVldGdlbGVnZW5oZWRlbmIgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleOvernachten': debugSerializeParam(
+            alleOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiAKGAoPYWxsZU92ZXJuYWNodGVuEgVtdnk1OXIEEgIICVABWg9hbGxlT3Zlcm5hY2h0ZW5iIEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHky',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleUitgaan': debugSerializeParam(
+            alleUitgaan,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QhwKFAoLYWxsZVVpdGdhYW4SBTN6NHFmcgQSAggJUAFaC2FsbGVVaXRnYWFuYiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleVerhuurCatering': debugSerializeParam(
+            alleVerhuurCatering,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            searchReference:
+                'reference=QiQKHAoTYWxsZVZlcmh1dXJDYXRlcmluZxIFd2tlcWVyBBICCAlQAVoTYWxsZVZlcmh1dXJDYXRlcmluZ2IgSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTI=',
+            name: 'dynamic',
+            nullable: false,
+          )
+        }.entries,
+        widgetStates: {
+          'tabBarCurrentIndex': debugSerializeParam(
+            tabBarCurrentIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'int',
+            nullable: true,
+          ),
+          'tabBarPreviousIndex': debugSerializeParam(
+            tabBarPreviousIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'int',
+            nullable: true,
+          ),
+          'textFieldText': debugSerializeParam(
+            textController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'String',
+            nullable: true,
+          )
+        }.entries,
+        actionOutputs: {
+          'resultHorecaActiviteiten': debugSerializeParam(
+            resultHorecaActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaCultuur': debugSerializeParam(
+            resultHorecaCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaEetgelegenheden': debugSerializeParam(
+            resultHorecaEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaOvernachten': debugSerializeParam(
+            resultHorecaOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaUitgaansgelegenheden': debugSerializeParam(
+            resultHorecaUitgaansgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaVerhuur': debugSerializeParam(
+            resultHorecaVerhuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'horecagelegenheidoverzichtKaartModels1 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels1.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels1.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels2 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels2.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels2.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels3 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels3.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels3.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels4 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels4.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels4.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels5 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels5.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels5.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels6 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels6.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels6.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+        searchReference:
+            'reference=OiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MlABWiBIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5Mg==',
+        widgetClassName: 'HorecagelegenhedenOverzichtCopy2',
+      );
+}

+ 1845 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2/horecagelegenheden_overzicht_copy2_widget.dart

@@ -0,0 +1,1845 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+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 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/index.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'horecagelegenheden_overzicht_copy2_model.dart';
+export 'horecagelegenheden_overzicht_copy2_model.dart';
+
+class HorecagelegenhedenOverzichtCopy2Widget extends StatefulWidget {
+  const HorecagelegenhedenOverzichtCopy2Widget({
+    super.key,
+    required this.plaats,
+  });
+
+  final String? plaats;
+
+  static String routeName = 'HorecagelegenhedenOverzichtCopy2';
+  static String routePath = '/horecagelegenhedenOverzichtCopy2';
+
+  @override
+  State<HorecagelegenhedenOverzichtCopy2Widget> createState() =>
+      _HorecagelegenhedenOverzichtCopy2WidgetState();
+}
+
+class _HorecagelegenhedenOverzichtCopy2WidgetState
+    extends State<HorecagelegenhedenOverzichtCopy2Widget>
+    with TickerProviderStateMixin, RouteAware {
+  late HorecagelegenhedenOverzichtCopy2Model _model;
+
+  final scaffoldKey = GlobalKey<ScaffoldState>();
+
+  @override
+  void initState() {
+    super.initState();
+    _model =
+        createModel(context, () => HorecagelegenhedenOverzichtCopy2Model());
+
+    // On page load action.
+    SchedulerBinding.instance.addPostFrameCallback((_) async {
+      _model.resultHorecaActiviteiten =
+          await actions.fetchAlleHorecagelegenheden(
+        '17969',
+        widget!.plaats!,
+        'services_1',
+      );
+      _model.alleActiviteiten =
+          _model.resultHorecaActiviteiten!.toList().cast<dynamic>();
+      safeSetState(() {});
+    });
+
+    _model.tabBarController = TabController(
+      vsync: this,
+      length: 6,
+      initialIndex: 0,
+    )
+      ..addListener(() => safeSetState(() {}))
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+
+    _model.textController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldFocusNode ??= FocusNode();
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.dispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HorecagelegenhedenOverzichtCopy2Widget 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);
+    context.watch<FFAppState>();
+    _model.horecagelegenheidoverzichtKaartModels1.clear();
+    _model.horecagelegenheidoverzichtKaartModels2.clear();
+    _model.horecagelegenheidoverzichtKaartModels3.clear();
+    _model.horecagelegenheidoverzichtKaartModels4.clear();
+    _model.horecagelegenheidoverzichtKaartModels5.clear();
+    _model.horecagelegenheidoverzichtKaartModels6.clear();
+
+    return GestureDetector(
+      onTap: () {
+        FocusScope.of(context).unfocus();
+        FocusManager.instance.primaryFocus?.unfocus();
+      },
+      child: Scaffold(
+        key: scaffoldKey,
+        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+        drawer: Drawer(
+          elevation: 16.0,
+          child: wrapWithModel(
+            model: _model.drawerComponentModel,
+            updateCallback: () => safeSetState(() {}),
+            child: Builder(builder: (_) {
+              return DebugFlutterFlowModelContext(
+                rootModel: _model.rootModel,
+                child: DrawerComponentWidget(),
+              );
+            }),
+          ),
+        ),
+        appBar: PreferredSize(
+          preferredSize: Size.fromHeight(80.0),
+          child: AppBar(
+            backgroundColor: FlutterFlowTheme.of(context).info,
+            iconTheme: IconThemeData(color: Color(0xFFB12727)),
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(),
+                  );
+                }),
+              ),
+              centerTitle: true,
+              expandedTitleScale: 1.0,
+            ),
+            bottom: PreferredSize(
+              preferredSize: Size.fromHeight(70.0),
+              child: Container(),
+            ),
+            toolbarHeight: MediaQuery.sizeOf(context).height * 0.25,
+            elevation: 2.0,
+          ),
+        ),
+        body: SafeArea(
+          top: true,
+          child: Column(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Expanded(
+                child: Container(
+                  decoration: BoxDecoration(
+                    boxShadow: [
+                      BoxShadow(
+                        blurRadius: 4.0,
+                        color: Color(0x33000000),
+                        offset: Offset(
+                          0.0,
+                          2.0,
+                        ),
+                      )
+                    ],
+                  ),
+                  child: Column(
+                    children: [
+                      Align(
+                        alignment: Alignment(-1.0, 0),
+                        child: TabBar(
+                          isScrollable: true,
+                          tabAlignment: TabAlignment.start,
+                          labelColor: FlutterFlowTheme.of(context).primaryText,
+                          unselectedLabelColor:
+                              FlutterFlowTheme.of(context).secondaryText,
+                          labelStyle:
+                              FlutterFlowTheme.of(context).titleMedium.override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontStyle,
+                                  ),
+                          unselectedLabelStyle:
+                              FlutterFlowTheme.of(context).titleMedium.override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontStyle,
+                                  ),
+                          indicatorColor: FlutterFlowTheme.of(context).primary,
+                          tabs: [
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'v7zmfnlu' /* Activiteiten */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '0wd3zzb2' /* Cultuur */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '06l3k6we' /* Eetgelegenheden */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '4vohbdey' /* Overnachten */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'oo16hec0' /* Uitgaan */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'wuihpc8q' /* Verhuur, catering */,
+                              ),
+                            ),
+                          ],
+                          controller: _model.tabBarController,
+                          onTap: (i) async {
+                            [
+                              () async {},
+                              () async {
+                                _model.tabVerhuurcateringGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaCultuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17963',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleCultuur = _model.resultHorecaCultuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabEetgelegenhedenGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaEetgelegenheden =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '34',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleEetgelegenheden = _model
+                                    .resultHorecaEetgelegenheden!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabOvernachtenGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaOvernachten =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17965',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleOvernachten = _model
+                                    .resultHorecaOvernachten!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabUitgaanGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaUitgaansgelegenheden =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17967',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleUitgaan = _model
+                                    .resultHorecaUitgaansgelegenheden!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabVerhuurcateringGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaVerhuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17968',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleVerhuurCatering = _model
+                                    .resultHorecaVerhuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              }
+                            ][i]();
+                          },
+                        ),
+                      ),
+                      Expanded(
+                        child: TabBarView(
+                          controller: _model.tabBarController,
+                          children: [
+                            Column(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Expanded(
+                                  child: FutureBuilder<ApiCallResponse>(
+                                    future: HorecagelegenheidoverzichtCall.call(
+                                      horcat: '17969',
+                                      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: Color(0xFFB1061E),
+                                              size: 80.0,
+                                            ),
+                                          ),
+                                        );
+                                      }
+                                      final staggeredViewHorecagelegenheidoverzichtResponse =
+                                          snapshot.data!;
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_3agcolwx'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .statusCode,
+                                        ParamType.int,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                        name: 'int',
+                                        nullable: false,
+                                      );
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_3agcolwx'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .bodyText,
+                                        ParamType.String,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                        name: 'String',
+                                        nullable: false,
+                                      );
+                                      debugLogWidgetClass(_model);
+
+                                      return Builder(
+                                        builder: (context) {
+                                          final horecagelegenheden =
+                                              getJsonField(
+                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                .jsonBody,
+                                            r'''$''',
+                                          ).toList().take(25).toList();
+                                          _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=HorecagelegenhedenOverzichtCopy2',
+                                            name: 'dynamic',
+                                            nullable: false,
+                                          );
+                                          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(
+                                                            horecagelegenhedenItem,
+                                                            r'''$.nid''',
+                                                          ).toString(),
+                                                          ParamType.String,
+                                                        ),
+                                                      }.withoutNulls,
+                                                    );
+                                                  },
+                                                  child: Builder(builder: (_) {
+                                                    return DebugFlutterFlowModelContext(
+                                                      rootModel:
+                                                          _model.rootModel,
+                                                      parentModelCallback: (m) {
+                                                        _model.horecagelegenheidoverzichtKaartModels1[
+                                                            'Keyllt_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                      },
+                                                      child:
+                                                          HorecagelegenheidoverzichtKaartWidget(
+                                                        key: Key(
+                                                            'Keyllt_${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>(),
+                                                      ),
+                                                    );
+                                                  }),
+                                                ),
+                                              );
+                                            },
+                                          );
+                                        },
+                                      );
+                                    },
+                                  ),
+                                ),
+                                Container(
+                                  width: 200.0,
+                                  child: TextFormField(
+                                    controller: _model.textController,
+                                    focusNode: _model.textFieldFocusNode,
+                                    autofocus: false,
+                                    enabled: true,
+                                    obscureText: false,
+                                    decoration: InputDecoration(
+                                      isDense: true,
+                                      labelStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      hintText:
+                                          FFLocalizations.of(context).getText(
+                                        'sisrkw2v' /* TextField */,
+                                      ),
+                                      hintStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      enabledBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      errorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedErrorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      filled: true,
+                                      fillColor: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            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,
+                                        ),
+                                    cursorColor: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    enableInteractiveSelection: true,
+                                    validator: _model.textControllerValidator
+                                        .asValidator(context),
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabCultuurGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17963',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_h6uc4b60'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_h6uc4b60'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels2[
+                                                                  'Key5a5_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Key5a5_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabEetgelegenhedenGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '34',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_7t5omdmg'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_7t5omdmg'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels3[
+                                                                  'Keydk5_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keydk5_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabOvernachtenGeladen) {
+                                  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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_pws69tl7'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_pws69tl7'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels4[
+                                                                  'Key1ob_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Key1ob_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabUitgaanGeladen) {
+                                  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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_it39m6uo'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_it39m6uo'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels5[
+                                                                  'Keyu1d_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyu1d_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabVerhuurcateringGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17968',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_i9cqu6nq'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_i9cqu6nq'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels6[
+                                                                  'Keydxw_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keydxw_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                          ],
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 801 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2_copy/horecagelegenheden_overzicht_copy2_copy_model.dart

@@ -0,0 +1,801 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+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 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/index.dart';
+import 'horecagelegenheden_overzicht_copy2_copy_widget.dart'
+    show HorecagelegenhedenOverzichtCopy2CopyWidget;
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class HorecagelegenhedenOverzichtCopy2CopyModel
+    extends FlutterFlowModel<HorecagelegenhedenOverzichtCopy2CopyWidget> {
+  ///  Local state fields for this page.
+
+  bool _tabCultuurGeladen = false;
+  set tabCultuurGeladen(bool value) {
+    _tabCultuurGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabCultuurGeladen => _tabCultuurGeladen;
+
+  bool _tabEetgelegenhedenGeladen = false;
+  set tabEetgelegenhedenGeladen(bool value) {
+    _tabEetgelegenhedenGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabEetgelegenhedenGeladen => _tabEetgelegenhedenGeladen;
+
+  bool _tabOvernachtenGeladen = false;
+  set tabOvernachtenGeladen(bool value) {
+    _tabOvernachtenGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabOvernachtenGeladen => _tabOvernachtenGeladen;
+
+  bool _tabUitgaanGeladen = false;
+  set tabUitgaanGeladen(bool value) {
+    _tabUitgaanGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabUitgaanGeladen => _tabUitgaanGeladen;
+
+  bool _tabVerhuurcateringGeladen = false;
+  set tabVerhuurcateringGeladen(bool value) {
+    _tabVerhuurcateringGeladen = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get tabVerhuurcateringGeladen => _tabVerhuurcateringGeladen;
+
+  String? _zoektermActiviteiten;
+  set zoektermActiviteiten(String? value) {
+    _zoektermActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermActiviteiten => _zoektermActiviteiten;
+
+  String? _zoektermCultuur;
+  set zoektermCultuur(String? value) {
+    _zoektermCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermCultuur => _zoektermCultuur;
+
+  String? _zoektermEetgelegenheden;
+  set zoektermEetgelegenheden(String? value) {
+    _zoektermEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermEetgelegenheden => _zoektermEetgelegenheden;
+
+  String? _zoektermOvernachten;
+  set zoektermOvernachten(String? value) {
+    _zoektermOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermOvernachten => _zoektermOvernachten;
+
+  String? _zoektermUitgaan;
+  set zoektermUitgaan(String? value) {
+    _zoektermUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermUitgaan => _zoektermUitgaan;
+
+  String? _zoektermVerhuurCatering;
+  set zoektermVerhuurCatering(String? value) {
+    _zoektermVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get zoektermVerhuurCatering => _zoektermVerhuurCatering;
+
+  String? _categorieFilterActiviteiten;
+  set categorieFilterActiviteiten(String? value) {
+    _categorieFilterActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterActiviteiten => _categorieFilterActiviteiten;
+
+  String? _categorieFilterCultuur;
+  set categorieFilterCultuur(String? value) {
+    _categorieFilterCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterCultuur => _categorieFilterCultuur;
+
+  String? _categorieFilterEetgelegenheden;
+  set categorieFilterEetgelegenheden(String? value) {
+    _categorieFilterEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterEetgelegenheden => _categorieFilterEetgelegenheden;
+
+  String? _categorieFilterOvernachten;
+  set categorieFilterOvernachten(String? value) {
+    _categorieFilterOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterOvernachten => _categorieFilterOvernachten;
+
+  String? _categorieFilterUitgaan;
+  set categorieFilterUitgaan(String? value) {
+    _categorieFilterUitgaan = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterUitgaan => _categorieFilterUitgaan;
+
+  String? _categorieFilterVerhuurCatering;
+  set categorieFilterVerhuurCatering(String? value) {
+    _categorieFilterVerhuurCatering = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get categorieFilterVerhuurCatering => _categorieFilterVerhuurCatering;
+
+  late LoggableList<dynamic> _alleActiviteiten = LoggableList([]);
+  set alleActiviteiten(List<dynamic> value) {
+    if (value != null) {
+      _alleActiviteiten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleActiviteiten =>
+      _alleActiviteiten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleActiviteiten(dynamic item) => alleActiviteiten.add(item);
+  void removeFromAlleActiviteiten(dynamic item) =>
+      alleActiviteiten.remove(item);
+  void removeAtIndexFromAlleActiviteiten(int index) =>
+      alleActiviteiten.removeAt(index);
+  void insertAtIndexInAlleActiviteiten(int index, dynamic item) =>
+      alleActiviteiten.insert(index, item);
+  void updateAlleActiviteitenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleActiviteiten[index] = updateFn(alleActiviteiten[index]);
+
+  late LoggableList<dynamic> _alleCultuur = LoggableList([]);
+  set alleCultuur(List<dynamic> value) {
+    if (value != null) {
+      _alleCultuur = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleCultuur =>
+      _alleCultuur?..logger = () => debugLogWidgetClass(this);
+  void addToAlleCultuur(dynamic item) => alleCultuur.add(item);
+  void removeFromAlleCultuur(dynamic item) => alleCultuur.remove(item);
+  void removeAtIndexFromAlleCultuur(int index) => alleCultuur.removeAt(index);
+  void insertAtIndexInAlleCultuur(int index, dynamic item) =>
+      alleCultuur.insert(index, item);
+  void updateAlleCultuurAtIndex(int index, Function(dynamic) updateFn) =>
+      alleCultuur[index] = updateFn(alleCultuur[index]);
+
+  late LoggableList<dynamic> _alleEetgelegenheden = LoggableList([]);
+  set alleEetgelegenheden(List<dynamic> value) {
+    if (value != null) {
+      _alleEetgelegenheden = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleEetgelegenheden =>
+      _alleEetgelegenheden?..logger = () => debugLogWidgetClass(this);
+  void addToAlleEetgelegenheden(dynamic item) => alleEetgelegenheden.add(item);
+  void removeFromAlleEetgelegenheden(dynamic item) =>
+      alleEetgelegenheden.remove(item);
+  void removeAtIndexFromAlleEetgelegenheden(int index) =>
+      alleEetgelegenheden.removeAt(index);
+  void insertAtIndexInAlleEetgelegenheden(int index, dynamic item) =>
+      alleEetgelegenheden.insert(index, item);
+  void updateAlleEetgelegenhedenAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleEetgelegenheden[index] = updateFn(alleEetgelegenheden[index]);
+
+  late LoggableList<dynamic> _alleOvernachten = LoggableList([]);
+  set alleOvernachten(List<dynamic> value) {
+    if (value != null) {
+      _alleOvernachten = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleOvernachten =>
+      _alleOvernachten?..logger = () => debugLogWidgetClass(this);
+  void addToAlleOvernachten(dynamic item) => alleOvernachten.add(item);
+  void removeFromAlleOvernachten(dynamic item) => alleOvernachten.remove(item);
+  void removeAtIndexFromAlleOvernachten(int index) =>
+      alleOvernachten.removeAt(index);
+  void insertAtIndexInAlleOvernachten(int index, dynamic item) =>
+      alleOvernachten.insert(index, item);
+  void updateAlleOvernachtenAtIndex(int index, Function(dynamic) updateFn) =>
+      alleOvernachten[index] = updateFn(alleOvernachten[index]);
+
+  late LoggableList<dynamic> _alleUitgaan = LoggableList([]);
+  set alleUitgaan(List<dynamic> value) {
+    if (value != null) {
+      _alleUitgaan = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleUitgaan =>
+      _alleUitgaan?..logger = () => debugLogWidgetClass(this);
+  void addToAlleUitgaan(dynamic item) => alleUitgaan.add(item);
+  void removeFromAlleUitgaan(dynamic item) => alleUitgaan.remove(item);
+  void removeAtIndexFromAlleUitgaan(int index) => alleUitgaan.removeAt(index);
+  void insertAtIndexInAlleUitgaan(int index, dynamic item) =>
+      alleUitgaan.insert(index, item);
+  void updateAlleUitgaanAtIndex(int index, Function(dynamic) updateFn) =>
+      alleUitgaan[index] = updateFn(alleUitgaan[index]);
+
+  late LoggableList<dynamic> _alleVerhuurCatering = LoggableList([]);
+  set alleVerhuurCatering(List<dynamic> value) {
+    if (value != null) {
+      _alleVerhuurCatering = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get alleVerhuurCatering =>
+      _alleVerhuurCatering?..logger = () => debugLogWidgetClass(this);
+  void addToAlleVerhuurCatering(dynamic item) => alleVerhuurCatering.add(item);
+  void removeFromAlleVerhuurCatering(dynamic item) =>
+      alleVerhuurCatering.remove(item);
+  void removeAtIndexFromAlleVerhuurCatering(int index) =>
+      alleVerhuurCatering.removeAt(index);
+  void insertAtIndexInAlleVerhuurCatering(int index, dynamic item) =>
+      alleVerhuurCatering.insert(index, item);
+  void updateAlleVerhuurCateringAtIndex(
+          int index, Function(dynamic) updateFn) =>
+      alleVerhuurCatering[index] = updateFn(alleVerhuurCatering[index]);
+
+  ///  State fields for stateful widgets in this page.
+
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in HorecagelegenhedenOverzichtCopy2Copy widget.
+  List<dynamic>? _resultHorecaActiviteiten;
+  set resultHorecaActiviteiten(List<dynamic>? value) {
+    _resultHorecaActiviteiten = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaActiviteiten => _resultHorecaActiviteiten;
+
+  // State field(s) for TabBar widget.
+  TabController? tabBarController;
+  int get tabBarCurrentIndex =>
+      tabBarController != null ? tabBarController!.index : 0;
+  int get tabBarPreviousIndex =>
+      tabBarController != null ? tabBarController!.previousIndex : 0;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels1 = {};
+  // State field(s) for TextField widget.
+  FocusNode? textFieldFocusNode;
+  TextEditingController? textController;
+  String? Function(BuildContext, String?)? textControllerValidator;
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabCultuur widget.
+  List<dynamic>? _resultHorecaCultuur;
+  set resultHorecaCultuur(List<dynamic>? value) {
+    _resultHorecaCultuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaCultuur => _resultHorecaCultuur;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels2 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabEetgelegenheden widget.
+  List<dynamic>? _resultHorecaEetgelegenheden;
+  set resultHorecaEetgelegenheden(List<dynamic>? value) {
+    _resultHorecaEetgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaEetgelegenheden =>
+      _resultHorecaEetgelegenheden;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels3 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabOvernachten widget.
+  List<dynamic>? _resultHorecaOvernachten;
+  set resultHorecaOvernachten(List<dynamic>? value) {
+    _resultHorecaOvernachten = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaOvernachten => _resultHorecaOvernachten;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels4 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabUitgaan widget.
+  List<dynamic>? _resultHorecaUitgaansgelegenheden;
+  set resultHorecaUitgaansgelegenheden(List<dynamic>? value) {
+    _resultHorecaUitgaansgelegenheden = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaUitgaansgelegenheden =>
+      _resultHorecaUitgaansgelegenheden;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels5 = {};
+  // Stores action output result for [Custom Action - fetchAlleHorecagelegenheden] action in TabVerhuurCatering widget.
+  List<dynamic>? _resultHorecaVerhuur;
+  set resultHorecaVerhuur(List<dynamic>? value) {
+    _resultHorecaVerhuur = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic>? get resultHorecaVerhuur => _resultHorecaVerhuur;
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels6 = {};
+  // Model for HeaderButtonsComponent component.
+  late HeaderButtonsComponentModel headerButtonsComponentModel;
+  // Model for drawerComponent component.
+  late DrawerComponentModel drawerComponentModel;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {
+    headerButtonsComponentModel =
+        createModel(context, () => HeaderButtonsComponentModel());
+    drawerComponentModel = createModel(context, () => DrawerComponentModel());
+
+    debugLogWidgetClass(this);
+  }
+
+  @override
+  void dispose() {
+    tabBarController?.dispose();
+    textFieldFocusNode?.dispose();
+    textController?.dispose();
+
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
+  }
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=ShgKEAoGcGxhYXRzEgYzcXVrMXVyBAgDIAFQAVoGcGxhYXRz',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        localStates: {
+          'tabCultuurGeladen': debugSerializeParam(
+            tabCultuurGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QisKGgoRdGFiQ3VsdHV1ckdlbGFkZW4SBWk5eTl0KgcSBWZhbHNlcgQIBSABUAFaEXRhYkN1bHR1dXJHZWxhZGVuYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabEetgelegenhedenGeladen': debugSerializeParam(
+            tabEetgelegenhedenGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QjMKIgoZdGFiRWV0Z2VsZWdlbmhlZGVuR2VsYWRlbhIFNmE5djgqBxIFZmFsc2VyBAgFIAFQAVoZdGFiRWV0Z2VsZWdlbmhlZGVuR2VsYWRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabOvernachtenGeladen': debugSerializeParam(
+            tabOvernachtenGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=Qi8KHgoVdGFiT3Zlcm5hY2h0ZW5HZWxhZGVuEgU1eGM2NioHEgVmYWxzZXIECAUgAVABWhV0YWJPdmVybmFjaHRlbkdlbGFkZW5iJEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHkyQ29weQ==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabUitgaanGeladen': debugSerializeParam(
+            tabUitgaanGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QisKGgoRdGFiVWl0Z2FhbkdlbGFkZW4SBTE1NWxkKgcSBWZhbHNlcgQIBSABUAFaEXRhYlVpdGdhYW5HZWxhZGVuYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'bool',
+            nullable: false,
+          ),
+          'tabVerhuurcateringGeladen': debugSerializeParam(
+            tabVerhuurcateringGeladen,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QjMKIgoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbhIFMWU3eHEqBxIFZmFsc2VyBAgFIAFQAVoZdGFiVmVyaHV1cmNhdGVyaW5nR2VsYWRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'bool',
+            nullable: false,
+          ),
+          'zoektermActiviteiten': debugSerializeParam(
+            zoektermActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QikKHQoUem9la3Rlcm1BY3Rpdml0ZWl0ZW4SBTZqYTVtKgISAHIECAMgAFABWhR6b2VrdGVybUFjdGl2aXRlaXRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermCultuur': debugSerializeParam(
+            zoektermCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1DdWx0dXVyEgVqdXA4aSoCEgByBAgDIABQAVoPem9la3Rlcm1DdWx0dXVyYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermEetgelegenheden': debugSerializeParam(
+            zoektermEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1FZXRnZWxlZ2VuaGVkZW4SBXh0b2VlKgISAHIECAMgAFABWhd6b2VrdGVybUVldGdlbGVnZW5oZWRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermOvernachten': debugSerializeParam(
+            zoektermOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QigKHAoTem9la3Rlcm1PdmVybmFjaHRlbhIFcXdicHAqAhIAcgQIAyAAUAFaE3pvZWt0ZXJtT3Zlcm5hY2h0ZW5iJEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHkyQ29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermUitgaan': debugSerializeParam(
+            zoektermUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiQKGAoPem9la3Rlcm1VaXRnYWFuEgVreHptaSoCEgByBAgDIABQAVoPem9la3Rlcm1VaXRnYWFuYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'zoektermVerhuurCatering': debugSerializeParam(
+            zoektermVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiwKIAoXem9la3Rlcm1WZXJodXVyQ2F0ZXJpbmcSBWd6eHcwKgISAHIECAMgAFABWhd6b2VrdGVybVZlcmh1dXJDYXRlcmluZ2IkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterActiviteiten': debugSerializeParam(
+            categorieFilterActiviteiten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QjAKJAobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuEgVieDgwOSoCEgByBAgDIABQAVobY2F0ZWdvcmllRmlsdGVyQWN0aXZpdGVpdGVuYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterCultuur': debugSerializeParam(
+            categorieFilterCultuur,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyQ3VsdHV1chIFdXA3d2kqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlckN1bHR1dXJiJEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHkyQ29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterEetgelegenheden': debugSerializeParam(
+            categorieFilterEetgelegenheden,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuEgVsa2dwayoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyRWV0Z2VsZWdlbmhlZGVuYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterOvernachten': debugSerializeParam(
+            categorieFilterOvernachten,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=Qi8KIwoaY2F0ZWdvcmllRmlsdGVyT3Zlcm5hY2h0ZW4SBTQ2dG1nKgISAHIECAMgAFABWhpjYXRlZ29yaWVGaWx0ZXJPdmVybmFjaHRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterUitgaan': debugSerializeParam(
+            categorieFilterUitgaan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QisKHwoWY2F0ZWdvcmllRmlsdGVyVWl0Z2FhbhIFY2NveHEqAhIAcgQIAyAAUAFaFmNhdGVnb3JpZUZpbHRlclVpdGdhYW5iJEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHkyQ29weQ==',
+            name: 'String',
+            nullable: true,
+          ),
+          'categorieFilterVerhuurCatering': debugSerializeParam(
+            categorieFilterVerhuurCatering,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QjMKJwoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nEgVxc3U3OCoCEgByBAgDIABQAVoeY2F0ZWdvcmllRmlsdGVyVmVyaHV1ckNhdGVyaW5nYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'String',
+            nullable: true,
+          ),
+          'alleActiviteiten': debugSerializeParam(
+            alleActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiEKGQoQYWxsZUFjdGl2aXRlaXRlbhIFdTN0cXRyBBICCAlQAVoQYWxsZUFjdGl2aXRlaXRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleCultuur': debugSerializeParam(
+            alleCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QhwKFAoLYWxsZUN1bHR1dXISBWltMWR5cgQSAggJUAFaC2FsbGVDdWx0dXVyYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleEetgelegenheden': debugSerializeParam(
+            alleEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiQKHAoTYWxsZUVldGdlbGVnZW5oZWRlbhIFZWEzd2pyBBICCAlQAVoTYWxsZUVldGdlbGVnZW5oZWRlbmIkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleOvernachten': debugSerializeParam(
+            alleOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiAKGAoPYWxsZU92ZXJuYWNodGVuEgVtdnk1OXIEEgIICVABWg9hbGxlT3Zlcm5hY2h0ZW5iJEhvcmVjYWdlbGVnZW5oZWRlbk92ZXJ6aWNodENvcHkyQ29weQ==',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleUitgaan': debugSerializeParam(
+            alleUitgaan,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QhwKFAoLYWxsZVVpdGdhYW4SBTN6NHFmcgQSAggJUAFaC2FsbGVVaXRnYWFuYiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHk=',
+            name: 'dynamic',
+            nullable: false,
+          ),
+          'alleVerhuurCatering': debugSerializeParam(
+            alleVerhuurCatering,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            searchReference:
+                'reference=QiQKHAoTYWxsZVZlcmh1dXJDYXRlcmluZxIFd2tlcWVyBBICCAlQAVoTYWxsZVZlcmh1dXJDYXRlcmluZ2IkSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+            name: 'dynamic',
+            nullable: false,
+          )
+        }.entries,
+        widgetStates: {
+          'tabBarCurrentIndex': debugSerializeParam(
+            tabBarCurrentIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'int',
+            nullable: true,
+          ),
+          'tabBarPreviousIndex': debugSerializeParam(
+            tabBarPreviousIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'int',
+            nullable: true,
+          ),
+          'textFieldText': debugSerializeParam(
+            textController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'String',
+            nullable: true,
+          )
+        }.entries,
+        actionOutputs: {
+          'resultHorecaActiviteiten': debugSerializeParam(
+            resultHorecaActiviteiten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaCultuur': debugSerializeParam(
+            resultHorecaCultuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaEetgelegenheden': debugSerializeParam(
+            resultHorecaEetgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaOvernachten': debugSerializeParam(
+            resultHorecaOvernachten,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaUitgaansgelegenheden': debugSerializeParam(
+            resultHorecaUitgaansgelegenheden,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'resultHorecaVerhuur': debugSerializeParam(
+            resultHorecaVerhuur,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'horecagelegenheidoverzichtKaartModels1 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels1.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels1.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels2 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels2.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels2.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels3 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels3.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels3.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels4 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels4.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels4.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels5 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels5.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels5.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+          'horecagelegenheidoverzichtKaartModels6 (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels6.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels6.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+        searchReference:
+            'reference=OiRIb3JlY2FnZWxlZ2VuaGVkZW5PdmVyemljaHRDb3B5MkNvcHlQAVokSG9yZWNhZ2VsZWdlbmhlZGVuT3ZlcnppY2h0Q29weTJDb3B5',
+        widgetClassName: 'HorecagelegenhedenOverzichtCopy2Copy',
+      );
+}

+ 1845 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2_copy/horecagelegenheden_overzicht_copy2_copy_widget.dart

@@ -0,0 +1,1845 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+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 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/index.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'horecagelegenheden_overzicht_copy2_copy_model.dart';
+export 'horecagelegenheden_overzicht_copy2_copy_model.dart';
+
+class HorecagelegenhedenOverzichtCopy2CopyWidget extends StatefulWidget {
+  const HorecagelegenhedenOverzichtCopy2CopyWidget({
+    super.key,
+    required this.plaats,
+  });
+
+  final String? plaats;
+
+  static String routeName = 'HorecagelegenhedenOverzichtCopy2Copy';
+  static String routePath = '/horecagelegenhedenOverzichtCopy2Copy';
+
+  @override
+  State<HorecagelegenhedenOverzichtCopy2CopyWidget> createState() =>
+      _HorecagelegenhedenOverzichtCopy2CopyWidgetState();
+}
+
+class _HorecagelegenhedenOverzichtCopy2CopyWidgetState
+    extends State<HorecagelegenhedenOverzichtCopy2CopyWidget>
+    with TickerProviderStateMixin, RouteAware {
+  late HorecagelegenhedenOverzichtCopy2CopyModel _model;
+
+  final scaffoldKey = GlobalKey<ScaffoldState>();
+
+  @override
+  void initState() {
+    super.initState();
+    _model =
+        createModel(context, () => HorecagelegenhedenOverzichtCopy2CopyModel());
+
+    // On page load action.
+    SchedulerBinding.instance.addPostFrameCallback((_) async {
+      _model.resultHorecaActiviteiten =
+          await actions.fetchAlleHorecagelegenheden(
+        '17969',
+        widget!.plaats!,
+        'services_1',
+      );
+      _model.alleActiviteiten =
+          _model.resultHorecaActiviteiten!.toList().cast<dynamic>();
+      safeSetState(() {});
+    });
+
+    _model.tabBarController = TabController(
+      vsync: this,
+      length: 6,
+      initialIndex: 0,
+    )
+      ..addListener(() => safeSetState(() {}))
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+
+    _model.textController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldFocusNode ??= FocusNode();
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.dispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HorecagelegenhedenOverzichtCopy2CopyWidget 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);
+    context.watch<FFAppState>();
+    _model.horecagelegenheidoverzichtKaartModels1.clear();
+    _model.horecagelegenheidoverzichtKaartModels2.clear();
+    _model.horecagelegenheidoverzichtKaartModels3.clear();
+    _model.horecagelegenheidoverzichtKaartModels4.clear();
+    _model.horecagelegenheidoverzichtKaartModels5.clear();
+    _model.horecagelegenheidoverzichtKaartModels6.clear();
+
+    return GestureDetector(
+      onTap: () {
+        FocusScope.of(context).unfocus();
+        FocusManager.instance.primaryFocus?.unfocus();
+      },
+      child: Scaffold(
+        key: scaffoldKey,
+        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+        drawer: Drawer(
+          elevation: 16.0,
+          child: wrapWithModel(
+            model: _model.drawerComponentModel,
+            updateCallback: () => safeSetState(() {}),
+            child: Builder(builder: (_) {
+              return DebugFlutterFlowModelContext(
+                rootModel: _model.rootModel,
+                child: DrawerComponentWidget(),
+              );
+            }),
+          ),
+        ),
+        appBar: PreferredSize(
+          preferredSize: Size.fromHeight(80.0),
+          child: AppBar(
+            backgroundColor: FlutterFlowTheme.of(context).info,
+            iconTheme: IconThemeData(color: Color(0xFFB12727)),
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(),
+                  );
+                }),
+              ),
+              centerTitle: true,
+              expandedTitleScale: 1.0,
+            ),
+            bottom: PreferredSize(
+              preferredSize: Size.fromHeight(70.0),
+              child: Container(),
+            ),
+            toolbarHeight: MediaQuery.sizeOf(context).height * 0.25,
+            elevation: 2.0,
+          ),
+        ),
+        body: SafeArea(
+          top: true,
+          child: Column(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Expanded(
+                child: Container(
+                  decoration: BoxDecoration(
+                    boxShadow: [
+                      BoxShadow(
+                        blurRadius: 4.0,
+                        color: Color(0x33000000),
+                        offset: Offset(
+                          0.0,
+                          2.0,
+                        ),
+                      )
+                    ],
+                  ),
+                  child: Column(
+                    children: [
+                      Align(
+                        alignment: Alignment(-1.0, 0),
+                        child: TabBar(
+                          isScrollable: true,
+                          tabAlignment: TabAlignment.start,
+                          labelColor: FlutterFlowTheme.of(context).primaryText,
+                          unselectedLabelColor:
+                              FlutterFlowTheme.of(context).secondaryText,
+                          labelStyle:
+                              FlutterFlowTheme.of(context).titleMedium.override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontStyle,
+                                  ),
+                          unselectedLabelStyle:
+                              FlutterFlowTheme.of(context).titleMedium.override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleMedium
+                                        .fontStyle,
+                                  ),
+                          indicatorColor: FlutterFlowTheme.of(context).primary,
+                          tabs: [
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'fyu5pfrs' /* Activiteiten */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'y63yqa75' /* Cultuur */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '14zkktka' /* Eetgelegenheden */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'tv5mypx1' /* Overnachten */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                '71mvhbto' /* Uitgaan */,
+                              ),
+                            ),
+                            Tab(
+                              text: FFLocalizations.of(context).getText(
+                                'fhszzuy8' /* Verhuur, catering */,
+                              ),
+                            ),
+                          ],
+                          controller: _model.tabBarController,
+                          onTap: (i) async {
+                            [
+                              () async {},
+                              () async {
+                                _model.tabVerhuurcateringGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaCultuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17963',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleCultuur = _model.resultHorecaCultuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabEetgelegenhedenGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaEetgelegenheden =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '34',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleEetgelegenheden = _model
+                                    .resultHorecaEetgelegenheden!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabOvernachtenGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaOvernachten =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17965',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleOvernachten = _model
+                                    .resultHorecaOvernachten!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabUitgaanGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaUitgaansgelegenheden =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17967',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleUitgaan = _model
+                                    .resultHorecaUitgaansgelegenheden!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              },
+                              () async {
+                                _model.tabVerhuurcateringGeladen = true;
+                                safeSetState(() {});
+                                _model.resultHorecaVerhuur =
+                                    await actions.fetchAlleHorecagelegenheden(
+                                  '17968',
+                                  widget!.plaats!,
+                                  'services_1',
+                                );
+                                _model.alleVerhuurCatering = _model
+                                    .resultHorecaVerhuur!
+                                    .toList()
+                                    .cast<dynamic>();
+                                safeSetState(() {});
+
+                                safeSetState(() {});
+                              }
+                            ][i]();
+                          },
+                        ),
+                      ),
+                      Expanded(
+                        child: TabBarView(
+                          controller: _model.tabBarController,
+                          children: [
+                            Column(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Expanded(
+                                  child: FutureBuilder<ApiCallResponse>(
+                                    future: HorecagelegenheidoverzichtCall.call(
+                                      horcat: '17969',
+                                      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: Color(0xFFB1061E),
+                                              size: 80.0,
+                                            ),
+                                          ),
+                                        );
+                                      }
+                                      final staggeredViewHorecagelegenheidoverzichtResponse =
+                                          snapshot.data!;
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_puc15zu4'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .statusCode,
+                                        ParamType.int,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                        name: 'int',
+                                        nullable: false,
+                                      );
+                                      _model.debugBackendQueries[
+                                              'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_puc15zu4'] =
+                                          debugSerializeParam(
+                                        staggeredViewHorecagelegenheidoverzichtResponse
+                                            .bodyText,
+                                        ParamType.String,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                        name: 'String',
+                                        nullable: false,
+                                      );
+                                      debugLogWidgetClass(_model);
+
+                                      return Builder(
+                                        builder: (context) {
+                                          final horecagelegenheden =
+                                              getJsonField(
+                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                .jsonBody,
+                                            r'''$''',
+                                          ).toList().take(25).toList();
+                                          _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=HorecagelegenhedenOverzichtCopy2Copy',
+                                            name: 'dynamic',
+                                            nullable: false,
+                                          );
+                                          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(
+                                                            horecagelegenhedenItem,
+                                                            r'''$.nid''',
+                                                          ).toString(),
+                                                          ParamType.String,
+                                                        ),
+                                                      }.withoutNulls,
+                                                    );
+                                                  },
+                                                  child: Builder(builder: (_) {
+                                                    return DebugFlutterFlowModelContext(
+                                                      rootModel:
+                                                          _model.rootModel,
+                                                      parentModelCallback: (m) {
+                                                        _model.horecagelegenheidoverzichtKaartModels1[
+                                                            'Key65q_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                      },
+                                                      child:
+                                                          HorecagelegenheidoverzichtKaartWidget(
+                                                        key: Key(
+                                                            'Key65q_${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>(),
+                                                      ),
+                                                    );
+                                                  }),
+                                                ),
+                                              );
+                                            },
+                                          );
+                                        },
+                                      );
+                                    },
+                                  ),
+                                ),
+                                Container(
+                                  width: 200.0,
+                                  child: TextFormField(
+                                    controller: _model.textController,
+                                    focusNode: _model.textFieldFocusNode,
+                                    autofocus: false,
+                                    enabled: true,
+                                    obscureText: false,
+                                    decoration: InputDecoration(
+                                      isDense: true,
+                                      labelStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      hintText:
+                                          FFLocalizations.of(context).getText(
+                                        'll4dsny3' /* TextField */,
+                                      ),
+                                      hintStyle: FlutterFlowTheme.of(context)
+                                          .labelMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .labelMedium
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .labelMedium
+                                                    .fontStyle,
+                                          ),
+                                      enabledBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: Color(0x00000000),
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      errorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      focusedErrorBorder: OutlineInputBorder(
+                                        borderSide: BorderSide(
+                                          color: FlutterFlowTheme.of(context)
+                                              .error,
+                                          width: 1.0,
+                                        ),
+                                        borderRadius:
+                                            BorderRadius.circular(8.0),
+                                      ),
+                                      filled: true,
+                                      fillColor: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            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,
+                                        ),
+                                    cursorColor: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    enableInteractiveSelection: true,
+                                    validator: _model.textControllerValidator
+                                        .asValidator(context),
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabCultuurGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17963',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_2vsh3lmq'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_2vsh3lmq'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2Copy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels2[
+                                                                  'Keygco_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keygco_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabEetgelegenhedenGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '34',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_2tnw895a'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_2tnw895a'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2Copy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels3[
+                                                                  'Keyijs_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyijs_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabOvernachtenGeladen) {
+                                  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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_9l9eicmq'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_9l9eicmq'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2Copy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels4[
+                                                                  'Keyjvz_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyjvz_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabUitgaanGeladen) {
+                                  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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_5j0ijl8v'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_5j0ijl8v'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2Copy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels5[
+                                                                  'Keyexm_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keyexm_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                            Builder(
+                              builder: (context) {
+                                if (_model.tabVerhuurcateringGeladen) {
+                                  return Column(
+                                    mainAxisSize: MainAxisSize.max,
+                                    children: [
+                                      Expanded(
+                                        child: FutureBuilder<ApiCallResponse>(
+                                          future: HorecagelegenheidoverzichtCall
+                                              .call(
+                                            horcat: '17968',
+                                            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: Color(0xFFB1061E),
+                                                    size: 80.0,
+                                                  ),
+                                                ),
+                                              );
+                                            }
+                                            final staggeredViewHorecagelegenheidoverzichtResponse =
+                                                snapshot.data!;
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_statusCode_StaggeredView_vfccjoj3'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .statusCode,
+                                              ParamType.int,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'int',
+                                              nullable: false,
+                                            );
+                                            _model.debugBackendQueries[
+                                                    'HorecagelegenheidoverzichtCall_responseBody_StaggeredView_vfccjoj3'] =
+                                                debugSerializeParam(
+                                              staggeredViewHorecagelegenheidoverzichtResponse
+                                                  .bodyText,
+                                              ParamType.String,
+                                              link:
+                                                  'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HorecagelegenhedenOverzichtCopy2Copy',
+                                              name: 'String',
+                                              nullable: false,
+                                            );
+                                            debugLogWidgetClass(_model);
+
+                                            return Builder(
+                                              builder: (context) {
+                                                final horecagelegenheden =
+                                                    getJsonField(
+                                                  staggeredViewHorecagelegenheidoverzichtResponse
+                                                      .jsonBody,
+                                                  r'''$''',
+                                                ).toList().take(25).toList();
+                                                if (horecagelegenheden
+                                                    .isEmpty) {
+                                                  return 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=HorecagelegenhedenOverzichtCopy2Copy',
+                                                  name: 'dynamic',
+                                                  nullable: false,
+                                                );
+                                                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(
+                                                                  horecagelegenhedenItem,
+                                                                  r'''$.nid''',
+                                                                ).toString(),
+                                                                ParamType
+                                                                    .String,
+                                                              ),
+                                                            }.withoutNulls,
+                                                          );
+                                                        },
+                                                        child: Builder(
+                                                            builder: (_) {
+                                                          return DebugFlutterFlowModelContext(
+                                                            rootModel: _model
+                                                                .rootModel,
+                                                            parentModelCallback:
+                                                                (m) {
+                                                              _model.horecagelegenheidoverzichtKaartModels6[
+                                                                  'Keydh8_${horecagelegenhedenIndex}_of_${horecagelegenheden.length}'] = m;
+                                                            },
+                                                            child:
+                                                                HorecagelegenheidoverzichtKaartWidget(
+                                                              key: Key(
+                                                                  'Keydh8_${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 {
+                                  return Container(
+                                    width: 100.0,
+                                    height: 100.0,
+                                    decoration: BoxDecoration(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryBackground,
+                                    ),
+                                  );
+                                }
+                              },
+                            ),
+                          ],
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 8 - 1
lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_model.dart

@@ -1,4 +1,5 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/google_maps_icon_button_widget.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_ad_banner.dart';
 import '/flutter_flow/flutter_flow_icon_button.dart';
@@ -9,7 +10,6 @@ import '/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_cop
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
 import '/custom_code/actions/index.dart' as actions;
-import '/custom_code/widgets/index.dart' as custom_widgets;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import 'horecagelegenheid_current_widget.dart'
@@ -45,6 +45,8 @@ class HorecagelegenheidCurrentModel
   int get tabBarPreviousIndex =>
       tabBarController != null ? tabBarController!.previousIndex : 0;
 
+  // Model for GoogleMapsIconButton component.
+  late GoogleMapsIconButtonModel googleMapsIconButtonModel;
   // Model for HorecagelegenheidEventTabelComponentCopy component.
   late HorecagelegenheidEventTabelComponentCopyModel
       horecagelegenheidEventTabelComponentCopyModel;
@@ -58,6 +60,8 @@ class HorecagelegenheidCurrentModel
   final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
   @override
   void initState(BuildContext context) {
+    googleMapsIconButtonModel =
+        createModel(context, () => GoogleMapsIconButtonModel());
     horecagelegenheidEventTabelComponentCopyModel = createModel(
         context, () => HorecagelegenheidEventTabelComponentCopyModel());
     drawerComponentModel = createModel(context, () => DrawerComponentModel());
@@ -70,6 +74,7 @@ class HorecagelegenheidCurrentModel
   @override
   void dispose() {
     tabBarController?.dispose();
+    googleMapsIconButtonModel.dispose();
     horecagelegenheidEventTabelComponentCopyModel.dispose();
     drawerComponentModel.dispose();
     headerButtonsComponentModel.dispose();
@@ -118,6 +123,8 @@ class HorecagelegenheidCurrentModel
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
+          'googleMapsIconButtonModel (GoogleMapsIconButton)':
+              googleMapsIconButtonModel?.toWidgetClassDebugData(),
           'horecagelegenheidEventTabelComponentCopyModel (HorecagelegenheidEventTabelComponentCopy)':
               horecagelegenheidEventTabelComponentCopyModel
                   ?.toWidgetClassDebugData(),

+ 306 - 339
lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_widget.dart

@@ -1,4 +1,5 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/google_maps_icon_button_widget.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_ad_banner.dart';
 import '/flutter_flow/flutter_flow_icon_button.dart';
@@ -9,7 +10,6 @@ import '/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_cop
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
 import '/custom_code/actions/index.dart' as actions;
-import '/custom_code/widgets/index.dart' as custom_widgets;
 import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import 'package:aligned_tooltip/aligned_tooltip.dart';
@@ -278,14 +278,21 @@ class _HorecagelegenheidCurrentWidgetState
                                           borderRadius:
                                               BorderRadius.circular(8.0),
                                           child: OctoImage(
-                                            placeholderBuilder: (_) =>
-                                                SizedBox.expand(
-                                              child: Image(
-                                                image: BlurHashImage(
-                                                    'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                                fit: BoxFit.cover,
-                                              ),
-                                            ),
+                                            placeholderBuilder: (_) {
+                                              final blurHash =
+                                                  'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                              if (!validateBlurhash(blurHash)) {
+                                                return const SizedBox.shrink();
+                                              }
+                                              return SizedBox.expand(
+                                                child: Image(
+                                                  image:
+                                                      BlurHashImage(blurHash),
+                                                  fit: BoxFit.cover,
+                                                ),
+                                              );
+                                            },
                                             image: CachedNetworkImageProvider(
                                               fotoosItem,
                                             ),
@@ -333,7 +340,7 @@ class _HorecagelegenheidCurrentWidgetState
                             padding: EdgeInsets.all(4.0),
                             child: Text(
                               FFLocalizations.of(context).getText(
-                                'kjqv6ycx' /* Favoriet */,
+                                'gh9ciiqo' /* Favoriet */,
                               ),
                               style: FlutterFlowTheme.of(context)
                                   .bodyLarge
@@ -554,235 +561,292 @@ class _HorecagelegenheidCurrentWidgetState
                           child: TabBarView(
                             controller: _model.tabBarController,
                             children: [
-                              Row(
+                              Column(
                                 mainAxisSize: MainAxisSize.max,
                                 children: [
-                                  Column(
-                                    mainAxisSize: MainAxisSize.max,
-                                    children: [
-                                      if (getJsonField(
+                                  if (getJsonField(
+                                        horecagelegenheidCurrentEstablishmentInfoResponse
+                                            .jsonBody,
+                                        r'''$[:].logo''',
+                                      ) !=
+                                      null)
+                                    ClipRRect(
+                                      borderRadius: BorderRadius.circular(8.0),
+                                      child: CachedNetworkImage(
+                                        fadeInDuration:
+                                            Duration(milliseconds: 500),
+                                        fadeOutDuration:
+                                            Duration(milliseconds: 500),
+                                        imageUrl: valueOrDefault<String>(
+                                          EstablishmentInfoCall
+                                              .establshmentLogo(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          ),
+                                          'logo',
+                                        ),
+                                        width: 200.0,
+                                        height: 200.0,
+                                        fit: BoxFit.cover,
+                                      ),
+                                    ),
+                                  if (EstablishmentInfoCall.establishmentAdres(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].logo''',
                                           ) !=
-                                          null)
-                                        ClipRRect(
-                                          borderRadius:
-                                              BorderRadius.circular(8.0),
-                                          child: CachedNetworkImage(
-                                            fadeInDuration:
-                                                Duration(milliseconds: 500),
-                                            fadeOutDuration:
-                                                Duration(milliseconds: 500),
-                                            imageUrl: valueOrDefault<String>(
-                                              EstablishmentInfoCall
-                                                  .establshmentLogo(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ),
-                                              'logo',
+                                          null &&
+                                      EstablishmentInfoCall.establishmentAdres(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          ) !=
+                                          '')
+                                    Text(
+                                      getJsonField(
+                                        horecagelegenheidCurrentEstablishmentInfoResponse
+                                            .jsonBody,
+                                        r'''$[:].adres''',
+                                      ).toString(),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .bodyMedium
+                                                      .fontStyle,
                                             ),
-                                            width: 200.0,
-                                            height: 200.0,
-                                            fit: BoxFit.cover,
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyMedium
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodyMedium
+                                                    .fontStyle,
                                           ),
-                                        ),
-                                      if (EstablishmentInfoCall
-                                                  .establishmentAdres(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              null &&
-                                          EstablishmentInfoCall
-                                                  .establishmentAdres(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              '')
-                                        Text(
-                                          getJsonField(
+                                    ),
+                                  if (EstablishmentInfoCall.establishmentPlaats(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].adres''',
-                                          ).toString(),
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodyMedium
-                                              .override(
-                                                font: GoogleFonts.inter(
-                                                  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 (EstablishmentInfoCall
-                                                  .establishmentPlaats(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              null &&
-                                          EstablishmentInfoCall
-                                                  .establishmentPlaats(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              '')
-                                        Text(
-                                          getJsonField(
+                                          ) !=
+                                          null &&
+                                      EstablishmentInfoCall.establishmentPlaats(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].plaats''',
-                                          ).toString(),
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodyMedium
-                                              .override(
-                                                font: GoogleFonts.inter(
-                                                  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 (EstablishmentInfoCall
-                                                  .establishmentTelefoonnummer(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              null &&
-                                          EstablishmentInfoCall
-                                                  .establishmentTelefoonnummer(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              '')
-                                        Text(
-                                          getJsonField(
+                                          ) !=
+                                          '')
+                                    Text(
+                                      getJsonField(
+                                        horecagelegenheidCurrentEstablishmentInfoResponse
+                                            .jsonBody,
+                                        r'''$[:].plaats''',
+                                      ).toString(),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              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 (EstablishmentInfoCall
+                                              .establishmentTelefoonnummer(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].telefoonnummer''',
-                                          ).toString(),
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodyMedium
-                                              .override(
-                                                font: GoogleFonts.inter(
-                                                  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 (EstablishmentInfoCall
-                                                  .establishmentEmail(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              null &&
-                                          EstablishmentInfoCall
-                                                  .establishmentEmail(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              '')
-                                        Text(
-                                          getJsonField(
+                                          ) !=
+                                          null &&
+                                      EstablishmentInfoCall
+                                              .establishmentTelefoonnummer(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].email''',
-                                          ).toString(),
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodyMedium
-                                              .override(
-                                                font: GoogleFonts.inter(
-                                                  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 (EstablishmentInfoCall.establshmentKvk(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              null &&
-                                          EstablishmentInfoCall.establshmentKvk(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ) !=
-                                              '')
-                                        Text(
-                                          getJsonField(
+                                          ) !=
+                                          '')
+                                    Text(
+                                      getJsonField(
+                                        horecagelegenheidCurrentEstablishmentInfoResponse
+                                            .jsonBody,
+                                        r'''$[:].telefoonnummer''',
+                                      ).toString(),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              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 (EstablishmentInfoCall.establishmentEmail(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          ) !=
+                                          null &&
+                                      EstablishmentInfoCall.establishmentEmail(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          ) !=
+                                          '')
+                                    Text(
+                                      getJsonField(
+                                        horecagelegenheidCurrentEstablishmentInfoResponse
+                                            .jsonBody,
+                                        r'''$[:].email''',
+                                      ).toString(),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              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 (EstablishmentInfoCall.establshmentKvk(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          ) !=
+                                          null &&
+                                      EstablishmentInfoCall.establshmentKvk(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          ) !=
+                                          '')
+                                    Text(
+                                      getJsonField(
+                                        horecagelegenheidCurrentEstablishmentInfoResponse
+                                            .jsonBody,
+                                        r'''$[:].kvk''',
+                                      ).toString(),
+                                      style: FlutterFlowTheme.of(context)
+                                          .bodyMedium
+                                          .override(
+                                            font: GoogleFonts.inter(
+                                              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) {
+                                      final cryptocoins = EstablishmentInfoCall
+                                              .establishmentCryptocoins(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].kvk''',
-                                          ).toString(),
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodyMedium
-                                              .override(
-                                                font: GoogleFonts.inter(
+                                          )?.toList() ??
+                                          [];
+                                      _model.debugGeneratorVariables[
+                                              'cryptocoins${cryptocoins.length > 100 ? ' (first 100)' : ''}'] =
+                                          debugSerializeParam(
+                                        cryptocoins.take(100),
+                                        ParamType.String,
+                                        isList: true,
+                                        link:
+                                            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=horecagelegenheidCurrent',
+                                        name: 'String',
+                                        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(cryptocoins.length,
+                                                (cryptocoinsIndex) {
+                                          final cryptocoinsItem =
+                                              cryptocoins[cryptocoinsIndex];
+                                          return Text(
+                                            cryptocoinsItem,
+                                            style: FlutterFlowTheme.of(context)
+                                                .bodyMedium
+                                                .override(
+                                                  font: GoogleFonts.inter(
+                                                    fontWeight:
+                                                        FlutterFlowTheme.of(
+                                                                context)
+                                                            .bodyMedium
+                                                            .fontWeight,
+                                                    fontStyle:
+                                                        FlutterFlowTheme.of(
+                                                                context)
+                                                            .bodyMedium
+                                                            .fontStyle,
+                                                  ),
+                                                  letterSpacing: 0.0,
                                                   fontWeight:
                                                       FlutterFlowTheme.of(
                                                               context)
@@ -794,128 +858,31 @@ class _HorecagelegenheidCurrentWidgetState
                                                           .bodyMedium
                                                           .fontStyle,
                                                 ),
-                                                letterSpacing: 0.0,
-                                                fontWeight:
-                                                    FlutterFlowTheme.of(context)
-                                                        .bodyMedium
-                                                        .fontWeight,
-                                                fontStyle:
-                                                    FlutterFlowTheme.of(context)
-                                                        .bodyMedium
-                                                        .fontStyle,
-                                              ),
-                                        ),
-                                      Builder(
-                                        builder: (context) {
-                                          final cryptocoins =
-                                              EstablishmentInfoCall
-                                                      .establishmentCryptocoins(
-                                                    horecagelegenheidCurrentEstablishmentInfoResponse
-                                                        .jsonBody,
-                                                  )?.toList() ??
-                                                  [];
-                                          _model.debugGeneratorVariables[
-                                                  'cryptocoins${cryptocoins.length > 100 ? ' (first 100)' : ''}'] =
-                                              debugSerializeParam(
-                                            cryptocoins.take(100),
-                                            ParamType.String,
-                                            isList: true,
-                                            link:
-                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=horecagelegenheidCurrent',
-                                            name: 'String',
-                                            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(
-                                                cryptocoins.length,
-                                                (cryptocoinsIndex) {
-                                              final cryptocoinsItem =
-                                                  cryptocoins[cryptocoinsIndex];
-                                              return Text(
-                                                cryptocoinsItem,
-                                                style:
-                                                    FlutterFlowTheme.of(context)
-                                                        .bodyMedium
-                                                        .override(
-                                                          font:
-                                                              GoogleFonts.inter(
-                                                            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,
-                                                        ),
-                                              );
-                                            }),
-                                          );
-                                        },
-                                      ),
-                                    ],
+                                        }),
+                                      );
+                                    },
                                   ),
-                                  Column(
-                                    mainAxisSize: MainAxisSize.max,
-                                    children: [
-                                      if (getJsonField(
+                                  wrapWithModel(
+                                    model: _model.googleMapsIconButtonModel,
+                                    updateCallback: () => safeSetState(() {}),
+                                    child: Builder(builder: (_) {
+                                      return DebugFlutterFlowModelContext(
+                                        rootModel: _model.rootModel,
+                                        child: GoogleMapsIconButtonWidget(
+                                          adres: EstablishmentInfoCall
+                                              .establishmentAdres(
                                             horecagelegenheidCurrentEstablishmentInfoResponse
                                                 .jsonBody,
-                                            r'''$[:].inhoud''',
-                                          ) !=
-                                          null)
-                                        Container(
-                                          width:
-                                              MediaQuery.sizeOf(context).width *
-                                                  0.7,
-                                          height: MediaQuery.sizeOf(context)
-                                                  .height *
-                                              0.2,
-                                          child: custom_widgets.FromHTML(
-                                            width: MediaQuery.sizeOf(context)
-                                                    .width *
-                                                0.7,
-                                            height: MediaQuery.sizeOf(context)
-                                                    .height *
-                                                0.2,
-                                            HTMLParameter:
-                                                valueOrDefault<String>(
-                                              EstablishmentInfoCall
-                                                  .establshmentInhoud(
-                                                horecagelegenheidCurrentEstablishmentInfoResponse
-                                                    .jsonBody,
-                                              ),
-                                              'content',
-                                            ),
-                                          ),
+                                          )!,
+                                          plaats: EstablishmentInfoCall
+                                              .establishmentPlaats(
+                                            horecagelegenheidCurrentEstablishmentInfoResponse
+                                                .jsonBody,
+                                          )!,
                                         ),
-                                    ],
+                                      );
+                                    }),
                                   ),
                                 ],
                               ),

+ 14 - 8
lib/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/horecagelegenheid_event_tabel_component_copy_widget.dart

@@ -327,14 +327,20 @@ class _HorecagelegenheidEventTabelComponentCopyWidgetState
                                   ClipRRect(
                                     borderRadius: BorderRadius.circular(8.0),
                                     child: OctoImage(
-                                      placeholderBuilder: (_) =>
-                                          SizedBox.expand(
-                                        child: Image(
-                                          image: BlurHashImage(
-                                              'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                          fit: BoxFit.cover,
-                                        ),
-                                      ),
+                                      placeholderBuilder: (_) {
+                                        final blurHash =
+                                            'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                        if (!validateBlurhash(blurHash)) {
+                                          return const SizedBox.shrink();
+                                        }
+                                        return SizedBox.expand(
+                                          child: Image(
+                                            image: BlurHashImage(blurHash),
+                                            fit: BoxFit.cover,
+                                          ),
+                                        );
+                                      },
                                       image: CachedNetworkImageProvider(
                                         getJsonField(
                                           evenementenItem,

+ 15 - 8
lib/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart

@@ -170,13 +170,20 @@ class _HorecagelegenheidoverzichtKaartWidgetState
                             return ClipRRect(
                               borderRadius: BorderRadius.circular(8.0),
                               child: OctoImage(
-                                placeholderBuilder: (_) => SizedBox.expand(
-                                  child: Image(
-                                    image: BlurHashImage(
-                                        'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                    fit: BoxFit.cover,
-                                  ),
-                                ),
+                                placeholderBuilder: (_) {
+                                  final blurHash =
+                                      'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                  if (!validateBlurhash(blurHash)) {
+                                    return const SizedBox.shrink();
+                                  }
+                                  return SizedBox.expand(
+                                    child: Image(
+                                      image: BlurHashImage(blurHash),
+                                      fit: BoxFit.cover,
+                                    ),
+                                  );
+                                },
                                 image: CachedNetworkImageProvider(
                                   widget!.logo!,
                                 ),
@@ -302,7 +309,7 @@ class _HorecagelegenheidoverzichtKaartWidgetState
                             padding: EdgeInsets.all(4.0),
                             child: Text(
                               FFLocalizations.of(context).getText(
-                                'ujd0p09x' /* MessageFavoriet... */,
+                                'y7slo4b4' /* MessageFavoriet... */,
                               ),
                               style: FlutterFlowTheme.of(context)
                                   .bodyLarge

+ 11 - 0
lib/index.dart

@@ -21,3 +21,14 @@ export '/wachtwoord_vergeten/wachtwoord_vergeten_widget.dart'
 export '/favorieten/favorieten_widget.dart' show FavorietenWidget;
 export '/kanweg/kanweg/kanweg_widget.dart' show KanwegWidget;
 export '/favorieten_copy/favorieten_copy_widget.dart' show FavorietenCopyWidget;
+export '/kanweg_test_upload/kanweg_test_upload_widget.dart'
+    show KanwegTestUploadWidget;
+export '/mijn_profiel/mijn_profiel_widget.dart' show MijnProfielWidget;
+export '/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart'
+    show StadsactiviteitAanmakenWidget;
+export '/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy/horecagelegenheden_overzicht_copy_widget.dart'
+    show HorecagelegenhedenOverzichtCopyWidget;
+export '/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2/horecagelegenheden_overzicht_copy2_widget.dart'
+    show HorecagelegenhedenOverzichtCopy2Widget;
+export '/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy2_copy/horecagelegenheden_overzicht_copy2_copy_widget.dart'
+    show HorecagelegenhedenOverzichtCopy2CopyWidget;

+ 68 - 0
lib/kanweg_test_upload/kanweg_test_upload_model.dart

@@ -0,0 +1,68 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/flutter_flow/upload_data.dart';
+import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import 'kanweg_test_upload_widget.dart' show KanwegTestUploadWidget;
+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 KanwegTestUploadModel extends FlutterFlowModel<KanwegTestUploadWidget> {
+  ///  State fields for stateful widgets in this page.
+
+  bool isDataUploading_uploadDataCnm = false;
+  FFUploadedFile uploadedLocalFile_uploadDataCnm =
+      FFUploadedFile(bytes: Uint8List.fromList([]), originalFilename: '');
+
+  // Stores action output result for [Custom Action - bestandUpload] action in Button widget.
+  dynamic? _uploadResult;
+  set uploadResult(dynamic? value) {
+    _uploadResult = value;
+    debugLogWidgetClass(this);
+  }
+
+  dynamic? get uploadResult => _uploadResult;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {
+    debugLogWidgetClass(this);
+  }
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        actionOutputs: {
+          'uploadResult': debugSerializeParam(
+            uploadResult,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwegTestUpload',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.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=kanwegTestUpload',
+        searchReference:
+            'reference=OhBrYW53ZWdUZXN0VXBsb2FkUAFaEGthbndlZ1Rlc3RVcGxvYWQ=',
+        widgetClassName: 'kanwegTestUpload',
+      );
+}

+ 204 - 0
lib/kanweg_test_upload/kanweg_test_upload_widget.dart

@@ -0,0 +1,204 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/flutter_flow/upload_data.dart';
+import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+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 'kanweg_test_upload_model.dart';
+export 'kanweg_test_upload_model.dart';
+
+class KanwegTestUploadWidget extends StatefulWidget {
+  const KanwegTestUploadWidget({super.key});
+
+  static String routeName = 'kanwegTestUpload';
+  static String routePath = '/kanwegTestUpload';
+
+  @override
+  State<KanwegTestUploadWidget> createState() => _KanwegTestUploadWidgetState();
+}
+
+class _KanwegTestUploadWidgetState extends State<KanwegTestUploadWidget>
+    with RouteAware {
+  late KanwegTestUploadModel _model;
+
+  final scaffoldKey = GlobalKey<ScaffoldState>();
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => KanwegTestUploadModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.dispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(KanwegTestUploadWidget 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);
+    context.watch<FFAppState>();
+
+    return GestureDetector(
+      onTap: () {
+        FocusScope.of(context).unfocus();
+        FocusManager.instance.primaryFocus?.unfocus();
+      },
+      child: Scaffold(
+        key: scaffoldKey,
+        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+        body: SafeArea(
+          top: true,
+          child: Column(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              FFButtonWidget(
+                onPressed: () async {
+                  final selectedMedia = await selectMediaWithSourceBottomSheet(
+                    context: context,
+                    allowPhoto: true,
+                  );
+                  if (selectedMedia != null &&
+                      selectedMedia.every(
+                          (m) => validateFileFormat(m.storagePath, context))) {
+                    safeSetState(
+                        () => _model.isDataUploading_uploadDataCnm = 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_uploadDataCnm = false;
+                    }
+                    if (selectedUploadedFiles.length == selectedMedia.length) {
+                      safeSetState(() {
+                        _model.uploadedLocalFile_uploadDataCnm =
+                            selectedUploadedFiles.first;
+                      });
+                    } else {
+                      safeSetState(() {});
+                      return;
+                    }
+                  }
+
+                  _model.uploadResult = await actions.bestandUpload(
+                    _model.uploadedLocalFile_uploadDataCnm,
+                    'https://uitgaanskrant.com/en/flutterdrup/bestand_upload/upload.json',
+                    FFAppState().userSessionname,
+                    FFAppState().userSessionid,
+                    FFAppState().userToken,
+                  );
+                  ScaffoldMessenger.of(context).showSnackBar(
+                    SnackBar(
+                      content: Text(
+                        getJsonField(
+                          _model.uploadResult,
+                          r'''$''',
+                        ).toString(),
+                        style: TextStyle(
+                          color: FlutterFlowTheme.of(context).primaryText,
+                        ),
+                      ),
+                      duration: Duration(milliseconds: 8000),
+                      backgroundColor: FlutterFlowTheme.of(context).secondary,
+                    ),
+                  );
+
+                  safeSetState(() {});
+                },
+                text: FFLocalizations.of(context).getText(
+                  'mw7suah8' /* Test Upload */,
+                ),
+                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).primary,
+                  textStyle: FlutterFlowTheme.of(context).titleSmall.override(
+                        font: GoogleFonts.interTight(
+                          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),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 1 - 1
lib/login/login/login_widget.dart

@@ -362,7 +362,7 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
                               padding: EdgeInsets.all(4.0),
                               child: Text(
                                 FFLocalizations.of(context).getText(
-                                  'ahiklq0c' /* Wachtwoord tonen/verbergen */,
+                                  'n3cyffso' /* Wachtwoord tonen/verbergen */,
                                 ),
                                 style: FlutterFlowTheme.of(context)
                                     .bodyLarge

+ 9 - 0
lib/main.dart

@@ -8,10 +8,13 @@ import 'package:flutter_web_plugins/url_strategy.dart';
 import 'auth/custom_auth/auth_util.dart';
 import 'auth/custom_auth/custom_auth_user_provider.dart';
 
+import 'backend/firebase/firebase_config.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import 'flutter_flow/flutter_flow_util.dart';
 import 'flutter_flow/internationalization.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter/foundation.dart';
+import 'package:firebase_crashlytics/firebase_crashlytics.dart';
 import 'flutter_flow/nav/nav.dart';
 import 'index.dart';
 
@@ -23,6 +26,8 @@ void main() async {
   GoRouter.optionURLReflectsImperativeAPIs = true;
   usePathUrlStrategy();
 
+  await initFirebase();
+
   await FlutterFlowTheme.initialize();
 
   await authManager.initialize();
@@ -34,6 +39,10 @@ void main() async {
     debugLogAppState(appState);
   });
 
+  if (!kIsWeb) {
+    FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
+  }
+
   final originalErrorWidgetBuilder = ErrorWidget.builder;
   ErrorWidget.builder = (FlutterErrorDetails details) {
     try {

+ 58 - 0
lib/mijn_profiel/mijn_profiel_model.dart

@@ -0,0 +1,58 @@
+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 '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
+import 'dart:ui';
+import 'mijn_profiel_widget.dart' show MijnProfielWidget;
+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 MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
+  ///  State fields for stateful widgets in this page.
+
+  // Models for HorecagelegenheidoverzichtKaart dynamic component.
+  Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {
+    debugLogWidgetClass(this);
+  }
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'horecagelegenheidoverzichtKaartModels (List<HorecagelegenheidoverzichtKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(horecagelegenheidoverzichtKaartModels.length,
+                  (index) => '[$index]'),
+              horecagelegenheidoverzichtKaartModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=mijnProfiel',
+        searchReference: 'reference=OgttaWpuUHJvZmllbFABWgttaWpuUHJvZmllbA==',
+        widgetClassName: 'mijnProfiel',
+      );
+}

+ 498 - 0
lib/mijn_profiel/mijn_profiel_widget.dart

@@ -0,0 +1,498 @@
+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 '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
+import 'dart:ui';
+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 'mijn_profiel_model.dart';
+export 'mijn_profiel_model.dart';
+
+class MijnProfielWidget extends StatefulWidget {
+  const MijnProfielWidget({super.key});
+
+  static String routeName = 'mijnProfiel';
+  static String routePath = '/mijnProfiel';
+
+  @override
+  State<MijnProfielWidget> createState() => _MijnProfielWidgetState();
+}
+
+class _MijnProfielWidgetState extends State<MijnProfielWidget> with RouteAware {
+  late MijnProfielModel _model;
+
+  final scaffoldKey = GlobalKey<ScaffoldState>();
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => MijnProfielModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.dispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(MijnProfielWidget 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);
+    context.watch<FFAppState>();
+    _model.horecagelegenheidoverzichtKaartModels.clear();
+
+    return GestureDetector(
+      onTap: () {
+        FocusScope.of(context).unfocus();
+        FocusManager.instance.primaryFocus?.unfocus();
+      },
+      child: Scaffold(
+        key: scaffoldKey,
+        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+        appBar: AppBar(
+          backgroundColor: FlutterFlowTheme.of(context).primary,
+          automaticallyImplyLeading: true,
+          actions: [],
+          centerTitle: true,
+          elevation: 0.0,
+        ),
+        body: SafeArea(
+          top: true,
+          child: SingleChildScrollView(
+            child: Column(
+              mainAxisSize: MainAxisSize.max,
+              children: [
+                Row(
+                  mainAxisSize: MainAxisSize.max,
+                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                  children: [
+                    Text(
+                      FFLocalizations.of(context).getText(
+                        'aiokgolu' /* Mijn horecagelegenheden */,
+                      ),
+                      style: FlutterFlowTheme.of(context).titleMedium.override(
+                            font: GoogleFonts.interTight(
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .titleMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .titleMedium
+                                  .fontStyle,
+                            ),
+                            letterSpacing: 0.0,
+                            fontWeight: FlutterFlowTheme.of(context)
+                                .titleMedium
+                                .fontWeight,
+                            fontStyle: FlutterFlowTheme.of(context)
+                                .titleMedium
+                                .fontStyle,
+                          ),
+                    ),
+                    FFButtonWidget(
+                      onPressed: () async {
+                        ScaffoldMessenger.of(context).showSnackBar(
+                          SnackBar(
+                            content: Text(
+                              'Binnenkort beschikbaar: evenement aanmaken',
+                              style: TextStyle(
+                                color: FlutterFlowTheme.of(context).primaryText,
+                              ),
+                            ),
+                            duration: Duration(milliseconds: 4000),
+                            backgroundColor:
+                                FlutterFlowTheme.of(context).secondary,
+                          ),
+                        );
+                      },
+                      text: FFLocalizations.of(context).getText(
+                        '8a7ti6zc' /* + Voeg toe */,
+                      ),
+                      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).primary,
+                        textStyle:
+                            FlutterFlowTheme.of(context).titleSmall.override(
+                                  font: GoogleFonts.interTight(
+                                    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),
+                      ),
+                    ),
+                  ],
+                ),
+                Row(
+                  mainAxisSize: MainAxisSize.max,
+                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                  children: [
+                    Text(
+                      FFLocalizations.of(context).getText(
+                        '5iw84w8w' /* Mijn redactierechten */,
+                      ),
+                      style: FlutterFlowTheme.of(context).titleMedium.override(
+                            font: GoogleFonts.interTight(
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .titleMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .titleMedium
+                                  .fontStyle,
+                            ),
+                            letterSpacing: 0.0,
+                            fontWeight: FlutterFlowTheme.of(context)
+                                .titleMedium
+                                .fontWeight,
+                            fontStyle: FlutterFlowTheme.of(context)
+                                .titleMedium
+                                .fontStyle,
+                          ),
+                    ),
+                    FFButtonWidget(
+                      onPressed: () async {
+                        ScaffoldMessenger.of(context).showSnackBar(
+                          SnackBar(
+                            content: Text(
+                              'Binnenkort beschikbaar: evenement aanmaken',
+                              style: TextStyle(
+                                color: FlutterFlowTheme.of(context).primaryText,
+                              ),
+                            ),
+                            duration: Duration(milliseconds: 4000),
+                            backgroundColor:
+                                FlutterFlowTheme.of(context).secondary,
+                          ),
+                        );
+                      },
+                      text: FFLocalizations.of(context).getText(
+                        'h3caw9re' /* + Voeg toe */,
+                      ),
+                      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).primary,
+                        textStyle:
+                            FlutterFlowTheme.of(context).titleSmall.override(
+                                  font: GoogleFonts.interTight(
+                                    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),
+                      ),
+                    ),
+                  ],
+                ),
+                FutureBuilder<ApiCallResponse>(
+                  future: MijnHorecagelegenhedenCall.call(
+                    sessionName: FFAppState().userSessionname,
+                    sessid: FFAppState().userSessionid,
+                  ),
+                  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: Color(0xFFB1061E),
+                            size: 80.0,
+                          ),
+                        ),
+                      );
+                    }
+                    final listViewMijnHorecagelegenhedenResponse =
+                        snapshot.data!;
+                    _model.debugBackendQueries[
+                            'MijnHorecagelegenhedenCall_statusCode_ListView_gxiuys53'] =
+                        debugSerializeParam(
+                      listViewMijnHorecagelegenhedenResponse.statusCode,
+                      ParamType.int,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+                      name: 'int',
+                      nullable: false,
+                    );
+                    _model.debugBackendQueries[
+                            'MijnHorecagelegenhedenCall_responseBody_ListView_gxiuys53'] =
+                        debugSerializeParam(
+                      listViewMijnHorecagelegenhedenResponse.bodyText,
+                      ParamType.String,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+                      name: 'String',
+                      nullable: false,
+                    );
+                    debugLogWidgetClass(_model);
+
+                    return Builder(
+                      builder: (context) {
+                        final horecaItem =
+                            listViewMijnHorecagelegenhedenResponse.jsonBody
+                                .toList();
+                        _model.debugGeneratorVariables[
+                                'horecaItem${horecaItem.length > 100 ? ' (first 100)' : ''}'] =
+                            debugSerializeParam(
+                          horecaItem.take(100),
+                          ParamType.JSON,
+                          isList: true,
+                          link:
+                              'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+                          name: 'dynamic',
+                          nullable: false,
+                        );
+                        debugLogWidgetClass(_model);
+
+                        return ListView.builder(
+                          padding: EdgeInsets.zero,
+                          shrinkWrap: true,
+                          scrollDirection: Axis.vertical,
+                          itemCount: horecaItem.length,
+                          itemBuilder: (context, horecaItemIndex) {
+                            final horecaItemItem = horecaItem[horecaItemIndex];
+                            return Builder(builder: (_) {
+                              return DebugFlutterFlowModelContext(
+                                rootModel: _model.rootModel,
+                                parentModelCallback: (m) {
+                                  _model.horecagelegenheidoverzichtKaartModels[
+                                      'Key4vp_${horecaItemIndex}_of_${horecaItem.length}'] = m;
+                                },
+                                child: HorecagelegenheidoverzichtKaartWidget(
+                                  key: Key(
+                                      'Key4vp_${horecaItemIndex}_of_${horecaItem.length}'),
+                                  titel: getJsonField(
+                                    horecaItemItem,
+                                    r'''$.titel''',
+                                  ).toString(),
+                                  logo: getJsonField(
+                                    horecaItemItem,
+                                    r'''$.logo''',
+                                  ).toString(),
+                                  nid: getJsonField(
+                                    horecaItemItem,
+                                    r'''$.nid''',
+                                  ).toString(),
+                                  adres: getJsonField(
+                                    horecaItemItem,
+                                    r'''$.adres''',
+                                  ).toString(),
+                                  plaats: getJsonField(
+                                    horecaItemItem,
+                                    r'''$.plaats''',
+                                  ).toString(),
+                                  categorie: (getJsonField(
+                                    horecaItemItem,
+                                    r'''$.categorie''',
+                                    true,
+                                  ) as List?)
+                                      ?.map<String>((e) => e.toString())
+                                      .toList()
+                                      .cast<String>(),
+                                ),
+                              );
+                            });
+                          },
+                        );
+                      },
+                    );
+                  },
+                ),
+                FutureBuilder<ApiCallResponse>(
+                  future: MijnStadsrechtenCall.call(
+                    sessionName: FFAppState().userSessionname,
+                    sessid: FFAppState().userSessionid,
+                  ),
+                  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: Color(0xFFB1061E),
+                            size: 80.0,
+                          ),
+                        ),
+                      );
+                    }
+                    final listViewMijnStadsrechtenResponse = snapshot.data!;
+                    _model.debugBackendQueries[
+                            'MijnStadsrechtenCall_statusCode_ListView_m1osuvrr'] =
+                        debugSerializeParam(
+                      listViewMijnStadsrechtenResponse.statusCode,
+                      ParamType.int,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+                      name: 'int',
+                      nullable: false,
+                    );
+                    _model.debugBackendQueries[
+                            'MijnStadsrechtenCall_responseBody_ListView_m1osuvrr'] =
+                        debugSerializeParam(
+                      listViewMijnStadsrechtenResponse.bodyText,
+                      ParamType.String,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+                      name: 'String',
+                      nullable: false,
+                    );
+                    debugLogWidgetClass(_model);
+
+                    return Builder(
+                      builder: (context) {
+                        final rechtItem =
+                            listViewMijnStadsrechtenResponse.jsonBody.toList();
+                        _model.debugGeneratorVariables[
+                                'rechtItem${rechtItem.length > 100 ? ' (first 100)' : ''}'] =
+                            debugSerializeParam(
+                          rechtItem.take(100),
+                          ParamType.JSON,
+                          isList: true,
+                          link:
+                              'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel',
+                          name: 'dynamic',
+                          nullable: false,
+                        );
+                        debugLogWidgetClass(_model);
+
+                        return ListView.builder(
+                          padding: EdgeInsets.zero,
+                          shrinkWrap: true,
+                          scrollDirection: Axis.vertical,
+                          itemCount: rechtItem.length,
+                          itemBuilder: (context, rechtItemIndex) {
+                            final rechtItemItem = rechtItem[rechtItemIndex];
+                            return Column(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Text(
+                                  '${getJsonField(
+                                    rechtItemItem,
+                                    r'''$.titel''',
+                                  ).toString()} — ${getJsonField(
+                                    rechtItemItem,
+                                    r'''$.parent_titel''',
+                                  ).toString()}',
+                                  style: FlutterFlowTheme.of(context)
+                                      .bodyMedium
+                                      .override(
+                                        font: GoogleFonts.inter(
+                                          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,
+                                      ),
+                                ),
+                              ],
+                            );
+                          },
+                        );
+                      },
+                    );
+                  },
+                ),
+              ],
+            ),
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 225 - 225
lib/shared/drawer_component/drawer_component_widget.dart

@@ -300,11 +300,11 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       color: Colors.transparent,
                       child: ListTile(
                         leading: Icon(
-                          Icons.castle,
+                          Icons.house,
                         ),
                         title: Text(
                           FFLocalizations.of(context).getText(
-                            '4u9vsobq' /* Provincie */,
+                            'qoszyexg' /* Gemeente */,
                           ),
                           style: FlutterFlowTheme.of(context)
                               .headlineMedium
@@ -355,7 +355,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().provincieSelectId,
+                              FFAppState().gemeenteSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -373,7 +373,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              '8luezemw' /* Uitgaan */,
+                              'f2xucb65' /* Uitgaan */,
                             ),
                             style: FlutterFlowTheme.of(context)
                                 .titleMedium
@@ -425,7 +425,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().provincieSelectId,
+                              FFAppState().gemeenteSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -438,12 +438,12 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       child: Material(
                         color: Colors.transparent,
                         child: ListTile(
-                          leading: Icon(
-                            Icons.sports_score,
+                          leading: FaIcon(
+                            FontAwesomeIcons.flagCheckered,
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'rb8etfad' /* Activiteiten */,
+                              'aco5j6v5' /* Activiteiten */,
                             ),
                             style: FlutterFlowTheme.of(context)
                                 .titleMedium
@@ -495,7 +495,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().provincieSelectId,
+                              FFAppState().gemeenteSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -508,12 +508,12 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       child: Material(
                         color: Colors.transparent,
                         child: ListTile(
-                          leading: FaIcon(
-                            FontAwesomeIcons.piedPiperAlt,
+                          leading: Icon(
+                            Icons.article_sharp,
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'l4upasn8' /* Cultuur */,
+                              'u6kma8y1' /* Cultuur */,
                             ),
                             style: FlutterFlowTheme.of(context)
                                 .titleMedium
@@ -565,7 +565,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().provincieSelectId,
+                              FFAppState().gemeenteSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -583,25 +583,25 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              '0zbg44er' /* Films */,
+                              'hpm7mxhj' /* Films */,
                             ),
                             style: FlutterFlowTheme.of(context)
-                                .titleMedium
+                                .titleLarge
                                 .override(
                                   font: GoogleFonts.interTight(
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleMedium
+                                        .titleLarge
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleMedium
+                                        .titleLarge
                                         .fontStyle,
                                   ),
                                   letterSpacing: 0.0,
                                   fontWeight: FlutterFlowTheme.of(context)
-                                      .titleMedium
+                                      .titleLarge
                                       .fontWeight,
                                   fontStyle: FlutterFlowTheme.of(context)
-                                      .titleMedium
+                                      .titleLarge
                                       .fontStyle,
                                 ),
                           ),
@@ -622,74 +622,71 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       ),
                     ),
                   ),
-                  Align(
-                    alignment: AlignmentDirectional(0.0, 0.0),
-                    child: Padding(
-                      padding:
-                          EdgeInsetsDirectional.fromSTEB(50.0, 0.0, 0.0, 0.0),
-                      child: InkWell(
-                        splashColor: Colors.transparent,
-                        focusColor: Colors.transparent,
-                        hoverColor: Colors.transparent,
-                        highlightColor: Colors.transparent,
-                        onTap: () async {
-                          context.pushNamed(
-                            PUitgaanPageWidget.routeName,
-                            queryParameters: {
-                              'plaats': serializeParam(
-                                FFAppState().provincieSelectId,
-                                ParamType.String,
-                              ),
-                              'services': serializeParam(
-                                'services_7',
-                                ParamType.String,
-                              ),
-                            }.withoutNulls,
-                          );
-                        },
-                        child: Material(
-                          color: Colors.transparent,
-                          child: ListTile(
-                            leading: FaIcon(
-                              FontAwesomeIcons.child,
+                  Padding(
+                    padding:
+                        EdgeInsetsDirectional.fromSTEB(50.0, 0.0, 0.0, 0.0),
+                    child: InkWell(
+                      splashColor: Colors.transparent,
+                      focusColor: Colors.transparent,
+                      hoverColor: Colors.transparent,
+                      highlightColor: Colors.transparent,
+                      onTap: () async {
+                        context.pushNamed(
+                          PUitgaanPageWidget.routeName,
+                          queryParameters: {
+                            'plaats': serializeParam(
+                              FFAppState().gemeenteSelectId,
+                              ParamType.String,
                             ),
-                            title: Text(
-                              FFLocalizations.of(context).getText(
-                                'zguubv8h' /* Jeugd */,
-                              ),
-                              style: FlutterFlowTheme.of(context)
-                                  .titleMedium
-                                  .override(
-                                    font: GoogleFonts.interTight(
-                                      fontWeight: FlutterFlowTheme.of(context)
-                                          .titleMedium
-                                          .fontWeight,
-                                      fontStyle: FlutterFlowTheme.of(context)
-                                          .titleMedium
-                                          .fontStyle,
-                                    ),
-                                    letterSpacing: 0.0,
+                            'services': serializeParam(
+                              'services_7',
+                              ParamType.String,
+                            ),
+                          }.withoutNulls,
+                        );
+                      },
+                      child: Material(
+                        color: Colors.transparent,
+                        child: ListTile(
+                          leading: Icon(
+                            Icons.emoji_people,
+                          ),
+                          title: Text(
+                            FFLocalizations.of(context).getText(
+                              'clxcjmfh' /* Jeugd */,
+                            ),
+                            style: FlutterFlowTheme.of(context)
+                                .titleLarge
+                                .override(
+                                  font: GoogleFonts.interTight(
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleMedium
+                                        .titleLarge
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleMedium
+                                        .titleLarge
                                         .fontStyle,
                                   ),
-                            ),
-                            trailing: Icon(
-                              Icons.arrow_forward_ios_rounded,
-                              color: FlutterFlowTheme.of(context).secondaryText,
-                              size: 24.0,
-                            ),
-                            tileColor: FlutterFlowTheme.of(context)
-                                .secondaryBackground,
-                            dense: true,
-                            contentPadding: EdgeInsetsDirectional.fromSTEB(
-                                12.0, 0.0, 12.0, 0.0),
-                            shape: RoundedRectangleBorder(
-                              borderRadius: BorderRadius.circular(8.0),
-                            ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .titleLarge
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .titleLarge
+                                      .fontStyle,
+                                ),
+                          ),
+                          trailing: Icon(
+                            Icons.arrow_forward_ios_rounded,
+                            color: FlutterFlowTheme.of(context).secondaryText,
+                            size: 24.0,
+                          ),
+                          tileColor:
+                              FlutterFlowTheme.of(context).secondaryBackground,
+                          dense: true,
+                          contentPadding: EdgeInsetsDirectional.fromSTEB(
+                              12.0, 0.0, 12.0, 0.0),
+                          shape: RoundedRectangleBorder(
+                            borderRadius: BorderRadius.circular(8.0),
                           ),
                         ),
                       ),
@@ -705,11 +702,10 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       highlightColor: Colors.transparent,
                       onTap: () async {
                         context.pushNamed(
-                          HorecagelegenhedenOverzichtProvinciePageWidget
-                              .routeName,
+                          HorecagelegenhedenOverzichtWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().provincieSelectId,
+                              FFAppState().gemeenteSelectId,
                               ParamType.String,
                             ),
                           }.withoutNulls,
@@ -723,25 +719,25 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'mqf3caeh' /* Horeca */,
+                              'mk70rozo' /* Horeca */,
                             ),
                             style: FlutterFlowTheme.of(context)
-                                .titleMedium
+                                .titleLarge
                                 .override(
                                   font: GoogleFonts.interTight(
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleMedium
+                                        .titleLarge
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleMedium
+                                        .titleLarge
                                         .fontStyle,
                                   ),
                                   letterSpacing: 0.0,
                                   fontWeight: FlutterFlowTheme.of(context)
-                                      .titleMedium
+                                      .titleLarge
                                       .fontWeight,
                                   fontStyle: FlutterFlowTheme.of(context)
-                                      .titleMedium
+                                      .titleLarge
                                       .fontStyle,
                                 ),
                           ),
@@ -762,17 +758,65 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       ),
                     ),
                   ),
+                  Padding(
+                    padding:
+                        EdgeInsetsDirectional.fromSTEB(50.0, 0.0, 0.0, 0.0),
+                    child: Material(
+                      color: Colors.transparent,
+                      child: ListTile(
+                        leading: Icon(
+                          Icons.delivery_dining,
+                        ),
+                        title: Text(
+                          FFLocalizations.of(context).getText(
+                            't46xiboh' /* Thuis bezorgen */,
+                          ),
+                          style:
+                              FlutterFlowTheme.of(context).titleLarge.override(
+                                    font: GoogleFonts.interTight(
+                                      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,
+                                  ),
+                        ),
+                        trailing: Icon(
+                          Icons.arrow_forward_ios_rounded,
+                          color: FlutterFlowTheme.of(context).secondaryText,
+                          size: 24.0,
+                        ),
+                        tileColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                        dense: false,
+                        contentPadding: EdgeInsetsDirectional.fromSTEB(
+                            12.0, 0.0, 12.0, 0.0),
+                        shape: RoundedRectangleBorder(
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                      ),
+                    ),
+                  ),
                   Padding(
                     padding: EdgeInsetsDirectional.fromSTEB(0.0, 5.0, 0.0, 0.0),
                     child: Material(
                       color: Colors.transparent,
                       child: ListTile(
                         leading: Icon(
-                          Icons.house,
+                          Icons.castle,
                         ),
                         title: Text(
                           FFLocalizations.of(context).getText(
-                            'qoszyexg' /* Gemeente */,
+                            '4u9vsobq' /* Provincie */,
                           ),
                           style: FlutterFlowTheme.of(context)
                               .headlineMedium
@@ -823,7 +867,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().gemeenteSelectId,
+                              FFAppState().provincieSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -841,7 +885,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'f2xucb65' /* Uitgaan */,
+                              '8luezemw' /* Uitgaan */,
                             ),
                             style: FlutterFlowTheme.of(context)
                                 .titleMedium
@@ -893,7 +937,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().gemeenteSelectId,
+                              FFAppState().provincieSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -906,12 +950,12 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       child: Material(
                         color: Colors.transparent,
                         child: ListTile(
-                          leading: FaIcon(
-                            FontAwesomeIcons.flagCheckered,
+                          leading: Icon(
+                            Icons.sports_score,
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'aco5j6v5' /* Activiteiten */,
+                              'rb8etfad' /* Activiteiten */,
                             ),
                             style: FlutterFlowTheme.of(context)
                                 .titleMedium
@@ -963,7 +1007,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().gemeenteSelectId,
+                              FFAppState().provincieSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -976,12 +1020,12 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       child: Material(
                         color: Colors.transparent,
                         child: ListTile(
-                          leading: Icon(
-                            Icons.article_sharp,
+                          leading: FaIcon(
+                            FontAwesomeIcons.piedPiperAlt,
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'u6kma8y1' /* Cultuur */,
+                              'l4upasn8' /* Cultuur */,
                             ),
                             style: FlutterFlowTheme.of(context)
                                 .titleMedium
@@ -1033,7 +1077,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           PUitgaanPageWidget.routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().gemeenteSelectId,
+                              FFAppState().provincieSelectId,
                               ParamType.String,
                             ),
                             'services': serializeParam(
@@ -1051,25 +1095,25 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'hpm7mxhj' /* Films */,
+                              '0zbg44er' /* Films */,
                             ),
                             style: FlutterFlowTheme.of(context)
-                                .titleLarge
+                                .titleMedium
                                 .override(
                                   font: GoogleFonts.interTight(
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleLarge
+                                        .titleMedium
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleLarge
+                                        .titleMedium
                                         .fontStyle,
                                   ),
                                   letterSpacing: 0.0,
                                   fontWeight: FlutterFlowTheme.of(context)
-                                      .titleLarge
+                                      .titleMedium
                                       .fontWeight,
                                   fontStyle: FlutterFlowTheme.of(context)
-                                      .titleLarge
+                                      .titleMedium
                                       .fontStyle,
                                 ),
                           ),
@@ -1090,71 +1134,74 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       ),
                     ),
                   ),
-                  Padding(
-                    padding:
-                        EdgeInsetsDirectional.fromSTEB(50.0, 0.0, 0.0, 0.0),
-                    child: InkWell(
-                      splashColor: Colors.transparent,
-                      focusColor: Colors.transparent,
-                      hoverColor: Colors.transparent,
-                      highlightColor: Colors.transparent,
-                      onTap: () async {
-                        context.pushNamed(
-                          PUitgaanPageWidget.routeName,
-                          queryParameters: {
-                            'plaats': serializeParam(
-                              FFAppState().gemeenteSelectId,
-                              ParamType.String,
-                            ),
-                            'services': serializeParam(
-                              'services_7',
-                              ParamType.String,
-                            ),
-                          }.withoutNulls,
-                        );
-                      },
-                      child: Material(
-                        color: Colors.transparent,
-                        child: ListTile(
-                          leading: Icon(
-                            Icons.emoji_people,
-                          ),
-                          title: Text(
-                            FFLocalizations.of(context).getText(
-                              'clxcjmfh' /* Jeugd */,
+                  Align(
+                    alignment: AlignmentDirectional(0.0, 0.0),
+                    child: Padding(
+                      padding:
+                          EdgeInsetsDirectional.fromSTEB(50.0, 0.0, 0.0, 0.0),
+                      child: InkWell(
+                        splashColor: Colors.transparent,
+                        focusColor: Colors.transparent,
+                        hoverColor: Colors.transparent,
+                        highlightColor: Colors.transparent,
+                        onTap: () async {
+                          context.pushNamed(
+                            PUitgaanPageWidget.routeName,
+                            queryParameters: {
+                              'plaats': serializeParam(
+                                FFAppState().provincieSelectId,
+                                ParamType.String,
+                              ),
+                              'services': serializeParam(
+                                'services_7',
+                                ParamType.String,
+                              ),
+                            }.withoutNulls,
+                          );
+                        },
+                        child: Material(
+                          color: Colors.transparent,
+                          child: ListTile(
+                            leading: FaIcon(
+                              FontAwesomeIcons.child,
                             ),
-                            style: FlutterFlowTheme.of(context)
-                                .titleLarge
-                                .override(
-                                  font: GoogleFonts.interTight(
+                            title: Text(
+                              FFLocalizations.of(context).getText(
+                                'zguubv8h' /* Jeugd */,
+                              ),
+                              style: FlutterFlowTheme.of(context)
+                                  .titleMedium
+                                  .override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .titleMedium
+                                          .fontStyle,
+                                    ),
+                                    letterSpacing: 0.0,
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleLarge
+                                        .titleMedium
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleLarge
+                                        .titleMedium
                                         .fontStyle,
                                   ),
-                                  letterSpacing: 0.0,
-                                  fontWeight: FlutterFlowTheme.of(context)
-                                      .titleLarge
-                                      .fontWeight,
-                                  fontStyle: FlutterFlowTheme.of(context)
-                                      .titleLarge
-                                      .fontStyle,
-                                ),
-                          ),
-                          trailing: Icon(
-                            Icons.arrow_forward_ios_rounded,
-                            color: FlutterFlowTheme.of(context).secondaryText,
-                            size: 24.0,
-                          ),
-                          tileColor:
-                              FlutterFlowTheme.of(context).secondaryBackground,
-                          dense: true,
-                          contentPadding: EdgeInsetsDirectional.fromSTEB(
-                              12.0, 0.0, 12.0, 0.0),
-                          shape: RoundedRectangleBorder(
-                            borderRadius: BorderRadius.circular(8.0),
+                            ),
+                            trailing: Icon(
+                              Icons.arrow_forward_ios_rounded,
+                              color: FlutterFlowTheme.of(context).secondaryText,
+                              size: 24.0,
+                            ),
+                            tileColor: FlutterFlowTheme.of(context)
+                                .secondaryBackground,
+                            dense: true,
+                            contentPadding: EdgeInsetsDirectional.fromSTEB(
+                                12.0, 0.0, 12.0, 0.0),
+                            shape: RoundedRectangleBorder(
+                              borderRadius: BorderRadius.circular(8.0),
+                            ),
                           ),
                         ),
                       ),
@@ -1170,10 +1217,11 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       highlightColor: Colors.transparent,
                       onTap: () async {
                         context.pushNamed(
-                          HorecagelegenhedenOverzichtWidget.routeName,
+                          HorecagelegenhedenOverzichtProvinciePageWidget
+                              .routeName,
                           queryParameters: {
                             'plaats': serializeParam(
-                              FFAppState().gemeenteSelectId,
+                              FFAppState().provincieSelectId,
                               ParamType.String,
                             ),
                           }.withoutNulls,
@@ -1187,25 +1235,25 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                           ),
                           title: Text(
                             FFLocalizations.of(context).getText(
-                              'mk70rozo' /* Horeca */,
+                              'mqf3caeh' /* Horeca */,
                             ),
                             style: FlutterFlowTheme.of(context)
-                                .titleLarge
+                                .titleMedium
                                 .override(
                                   font: GoogleFonts.interTight(
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleLarge
+                                        .titleMedium
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleLarge
+                                        .titleMedium
                                         .fontStyle,
                                   ),
                                   letterSpacing: 0.0,
                                   fontWeight: FlutterFlowTheme.of(context)
-                                      .titleLarge
+                                      .titleMedium
                                       .fontWeight,
                                   fontStyle: FlutterFlowTheme.of(context)
-                                      .titleLarge
+                                      .titleMedium
                                       .fontStyle,
                                 ),
                           ),
@@ -1226,54 +1274,6 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       ),
                     ),
                   ),
-                  Padding(
-                    padding:
-                        EdgeInsetsDirectional.fromSTEB(50.0, 0.0, 0.0, 0.0),
-                    child: Material(
-                      color: Colors.transparent,
-                      child: ListTile(
-                        leading: Icon(
-                          Icons.delivery_dining,
-                        ),
-                        title: Text(
-                          FFLocalizations.of(context).getText(
-                            't46xiboh' /* Thuis bezorgen */,
-                          ),
-                          style:
-                              FlutterFlowTheme.of(context).titleLarge.override(
-                                    font: GoogleFonts.interTight(
-                                      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,
-                                  ),
-                        ),
-                        trailing: Icon(
-                          Icons.arrow_forward_ios_rounded,
-                          color: FlutterFlowTheme.of(context).secondaryText,
-                          size: 24.0,
-                        ),
-                        tileColor:
-                            FlutterFlowTheme.of(context).secondaryBackground,
-                        dense: false,
-                        contentPadding: EdgeInsetsDirectional.fromSTEB(
-                            12.0, 0.0, 12.0, 0.0),
-                        shape: RoundedRectangleBorder(
-                          borderRadius: BorderRadius.circular(8.0),
-                        ),
-                      ),
-                    ),
-                  ),
                   Padding(
                     padding:
                         EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 48.0),
@@ -1371,7 +1371,7 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                             padding: EdgeInsets.all(4.0),
                             child: Text(
                               FFLocalizations.of(context).getText(
-                                'vmbtb6ah' /* Terug */,
+                                'vnwx710y' /* Terug */,
                               ),
                               style: FlutterFlowTheme.of(context)
                                   .bodyLarge

+ 243 - 0
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_model.dart

@@ -0,0 +1,243 @@
+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 'stadsactiviteit_aanmaken_widget.dart'
+    show StadsactiviteitAanmakenWidget;
+import 'package:flutter/foundation.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 StadsactiviteitAanmakenModel
+    extends FlutterFlowModel<StadsactiviteitAanmakenWidget> {
+  ///  State fields for stateful widgets in this page.
+
+  // State field(s) for TextFieldTitel widget.
+  FocusNode? textFieldTitelFocusNode;
+  TextEditingController? textFieldTitelTextController;
+  String? Function(BuildContext, String?)?
+      textFieldTitelTextControllerValidator;
+  // State field(s) for TextFieldDatumStart widget.
+  FocusNode? textFieldDatumStartFocusNode;
+  TextEditingController? textFieldDatumStartTextController;
+  String? Function(BuildContext, String?)?
+      textFieldDatumStartTextControllerValidator;
+  DateTime? datePicked1;
+  // State field(s) for TextFieldDatumEind widget.
+  FocusNode? textFieldDatumEindFocusNode;
+  TextEditingController? textFieldDatumEindTextController;
+  String? Function(BuildContext, String?)?
+      textFieldDatumEindTextControllerValidator;
+  DateTime? datePicked2;
+  // State field(s) for TextFieldOmschrijving widget.
+  FocusNode? textFieldOmschrijvingFocusNode;
+  TextEditingController? textFieldOmschrijvingTextController;
+  String? Function(BuildContext, String?)?
+      textFieldOmschrijvingTextControllerValidator;
+  // State field(s) for TextFieldOrganisator widget.
+  FocusNode? textFieldOrganisatorFocusNode;
+  TextEditingController? textFieldOrganisatorTextController;
+  String? Function(BuildContext, String?)?
+      textFieldOrganisatorTextControllerValidator;
+  // State field(s) for TextFieldContact widget.
+  FocusNode? textFieldContactFocusNode;
+  TextEditingController? textFieldContactTextController;
+  String? Function(BuildContext, String?)?
+      textFieldContactTextControllerValidator;
+  // State field(s) for TextFieldAdres widget.
+  FocusNode? textFieldAdresFocusNode;
+  TextEditingController? textFieldAdresTextController;
+  String? Function(BuildContext, String?)?
+      textFieldAdresTextControllerValidator;
+  // State field(s) for TextFieldPostcode widget.
+  FocusNode? textFieldPostcodeFocusNode;
+  TextEditingController? textFieldPostcodeTextController;
+  String? Function(BuildContext, String?)?
+      textFieldPostcodeTextControllerValidator;
+  // State field(s) for TextFieldPlaats widget.
+  FocusNode? textFieldPlaatsFocusNode;
+  TextEditingController? textFieldPlaatsTextController;
+  String? Function(BuildContext, String?)?
+      textFieldPlaatsTextControllerValidator;
+  // State field(s) for TextFieldEntreeprijs widget.
+  FocusNode? textFieldEntreeprijsFocusNode;
+  TextEditingController? textFieldEntreeprijsTextController;
+  String? Function(BuildContext, String?)?
+      textFieldEntreeprijsTextControllerValidator;
+  // State field(s) for TextFieldToelichtingEntree widget.
+  FocusNode? textFieldToelichtingEntreeFocusNode;
+  TextEditingController? textFieldToelichtingEntreeTextController;
+  String? Function(BuildContext, String?)?
+      textFieldToelichtingEntreeTextControllerValidator;
+  // State field(s) for TextFieldWebsiteURL widget.
+  FocusNode? textFieldWebsiteURLFocusNode;
+  TextEditingController? textFieldWebsiteURLTextController;
+  String? Function(BuildContext, String?)?
+      textFieldWebsiteURLTextControllerValidator;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {
+    debugLogWidgetClass(this);
+  }
+
+  @override
+  void dispose() {
+    textFieldTitelFocusNode?.dispose();
+    textFieldTitelTextController?.dispose();
+
+    textFieldDatumStartFocusNode?.dispose();
+    textFieldDatumStartTextController?.dispose();
+
+    textFieldDatumEindFocusNode?.dispose();
+    textFieldDatumEindTextController?.dispose();
+
+    textFieldOmschrijvingFocusNode?.dispose();
+    textFieldOmschrijvingTextController?.dispose();
+
+    textFieldOrganisatorFocusNode?.dispose();
+    textFieldOrganisatorTextController?.dispose();
+
+    textFieldContactFocusNode?.dispose();
+    textFieldContactTextController?.dispose();
+
+    textFieldAdresFocusNode?.dispose();
+    textFieldAdresTextController?.dispose();
+
+    textFieldPostcodeFocusNode?.dispose();
+    textFieldPostcodeTextController?.dispose();
+
+    textFieldPlaatsFocusNode?.dispose();
+    textFieldPlaatsTextController?.dispose();
+
+    textFieldEntreeprijsFocusNode?.dispose();
+    textFieldEntreeprijsTextController?.dispose();
+
+    textFieldToelichtingEntreeFocusNode?.dispose();
+    textFieldToelichtingEntreeTextController?.dispose();
+
+    textFieldWebsiteURLFocusNode?.dispose();
+    textFieldWebsiteURLTextController?.dispose();
+  }
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetStates: {
+          'textFieldTitelText': debugSerializeParam(
+            textFieldTitelTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldDatumStartText': debugSerializeParam(
+            textFieldDatumStartTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldDatumEindText': debugSerializeParam(
+            textFieldDatumEindTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldOmschrijvingText': debugSerializeParam(
+            textFieldOmschrijvingTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldOrganisatorText': debugSerializeParam(
+            textFieldOrganisatorTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldContactText': debugSerializeParam(
+            textFieldContactTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldAdresText': debugSerializeParam(
+            textFieldAdresTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldPostcodeText': debugSerializeParam(
+            textFieldPostcodeTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldPlaatsText': debugSerializeParam(
+            textFieldPlaatsTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldEntreeprijsText': debugSerializeParam(
+            textFieldEntreeprijsTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldToelichtingEntreeText': debugSerializeParam(
+            textFieldToelichtingEntreeTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          ),
+          'textFieldWebsiteURLText': debugSerializeParam(
+            textFieldWebsiteURLTextController?.text,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=stadsactiviteitAanmaken',
+            name: 'String',
+            nullable: true,
+          )
+        }.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=stadsactiviteitAanmaken',
+        searchReference:
+            'reference=OhdzdGFkc2FjdGl2aXRlaXRBYW5tYWtlblABWhdzdGFkc2FjdGl2aXRlaXRBYW5tYWtlbg==',
+        widgetClassName: 'stadsactiviteitAanmaken',
+      );
+}

+ 1715 - 0
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart

@@ -0,0 +1,1715 @@
+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 'package:flutter/foundation.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 'stadsactiviteit_aanmaken_model.dart';
+export 'stadsactiviteit_aanmaken_model.dart';
+
+class StadsactiviteitAanmakenWidget extends StatefulWidget {
+  const StadsactiviteitAanmakenWidget({super.key});
+
+  static String routeName = 'stadsactiviteitAanmaken';
+  static String routePath = '/stadsactiviteitAanmaken';
+
+  @override
+  State<StadsactiviteitAanmakenWidget> createState() =>
+      _StadsactiviteitAanmakenWidgetState();
+}
+
+class _StadsactiviteitAanmakenWidgetState
+    extends State<StadsactiviteitAanmakenWidget> with RouteAware {
+  late StadsactiviteitAanmakenModel _model;
+
+  final scaffoldKey = GlobalKey<ScaffoldState>();
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => StadsactiviteitAanmakenModel());
+
+    _model.textFieldTitelTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldTitelFocusNode ??= FocusNode();
+
+    _model.textFieldDatumStartTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldDatumStartFocusNode ??= FocusNode();
+
+    _model.textFieldDatumEindTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldDatumEindFocusNode ??= FocusNode();
+
+    _model.textFieldOmschrijvingTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldOmschrijvingFocusNode ??= FocusNode();
+
+    _model.textFieldOrganisatorTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldOrganisatorFocusNode ??= FocusNode();
+
+    _model.textFieldContactTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldContactFocusNode ??= FocusNode();
+
+    _model.textFieldAdresTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldAdresFocusNode ??= FocusNode();
+
+    _model.textFieldPostcodeTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldPostcodeFocusNode ??= FocusNode();
+
+    _model.textFieldPlaatsTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldPlaatsFocusNode ??= FocusNode();
+
+    _model.textFieldEntreeprijsTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldEntreeprijsFocusNode ??= FocusNode();
+
+    _model.textFieldToelichtingEntreeTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldToelichtingEntreeFocusNode ??= FocusNode();
+
+    _model.textFieldWebsiteURLTextController ??= TextEditingController()
+      ..addListener(() {
+        debugLogWidgetClass(_model);
+      });
+    _model.textFieldWebsiteURLFocusNode ??= FocusNode();
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.dispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(StadsactiviteitAanmakenWidget 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 GestureDetector(
+      onTap: () {
+        FocusScope.of(context).unfocus();
+        FocusManager.instance.primaryFocus?.unfocus();
+      },
+      child: Scaffold(
+        key: scaffoldKey,
+        backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+        appBar: AppBar(
+          backgroundColor: FlutterFlowTheme.of(context).primary,
+          automaticallyImplyLeading: true,
+          actions: [],
+          centerTitle: true,
+          elevation: 0.0,
+        ),
+        body: SafeArea(
+          top: true,
+          child: Padding(
+            padding: EdgeInsets.all(16.0),
+            child: SingleChildScrollView(
+              child: Column(
+                mainAxisSize: MainAxisSize.max,
+                children: [
+                  Container(
+                    width: 200.0,
+                    child: TextFormField(
+                      controller: _model.textFieldTitelTextController,
+                      focusNode: _model.textFieldTitelFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          'xorq08j5' /* Titel */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'jwgx4el8' /* Titel activiteit */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model.textFieldTitelTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldDatumStartTextController,
+                      focusNode: _model.textFieldDatumStartFocusNode,
+                      onFieldSubmitted: (_) async {
+                        final _datePicked1Date = await showDatePicker(
+                          context: context,
+                          initialDate: getCurrentTimestamp,
+                          firstDate: getCurrentTimestamp,
+                          lastDate: DateTime(2050),
+                          builder: (context, child) {
+                            return wrapInMaterialDatePickerTheme(
+                              context,
+                              child!,
+                              headerBackgroundColor:
+                                  FlutterFlowTheme.of(context).primary,
+                              headerForegroundColor:
+                                  FlutterFlowTheme.of(context).info,
+                              headerTextStyle: FlutterFlowTheme.of(context)
+                                  .headlineLarge
+                                  .override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FontWeight.w600,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .headlineLarge
+                                          .fontStyle,
+                                    ),
+                                    fontSize: 32.0,
+                                    letterSpacing: 0.0,
+                                    fontWeight: FontWeight.w600,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .headlineLarge
+                                        .fontStyle,
+                                  ),
+                              pickerBackgroundColor:
+                                  FlutterFlowTheme.of(context)
+                                      .secondaryBackground,
+                              pickerForegroundColor:
+                                  FlutterFlowTheme.of(context).primaryText,
+                              selectedDateTimeBackgroundColor:
+                                  FlutterFlowTheme.of(context).primary,
+                              selectedDateTimeForegroundColor:
+                                  FlutterFlowTheme.of(context).info,
+                              actionButtonForegroundColor:
+                                  FlutterFlowTheme.of(context).primaryText,
+                              iconSize: 24.0,
+                            );
+                          },
+                        );
+
+                        TimeOfDay? _datePicked1Time;
+                        if (_datePicked1Date != null) {
+                          _datePicked1Time = await showTimePicker(
+                            context: context,
+                            initialTime:
+                                TimeOfDay.fromDateTime(getCurrentTimestamp),
+                            builder: (context, child) {
+                              return wrapInMaterialTimePickerTheme(
+                                context,
+                                child!,
+                                headerBackgroundColor:
+                                    FlutterFlowTheme.of(context).primary,
+                                headerForegroundColor:
+                                    FlutterFlowTheme.of(context).info,
+                                headerTextStyle: FlutterFlowTheme.of(context)
+                                    .headlineLarge
+                                    .override(
+                                      font: GoogleFonts.interTight(
+                                        fontWeight: FontWeight.w600,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .headlineLarge
+                                            .fontStyle,
+                                      ),
+                                      fontSize: 32.0,
+                                      letterSpacing: 0.0,
+                                      fontWeight: FontWeight.w600,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .headlineLarge
+                                          .fontStyle,
+                                    ),
+                                pickerBackgroundColor:
+                                    FlutterFlowTheme.of(context)
+                                        .secondaryBackground,
+                                pickerForegroundColor:
+                                    FlutterFlowTheme.of(context).primaryText,
+                                selectedDateTimeBackgroundColor:
+                                    FlutterFlowTheme.of(context).primary,
+                                selectedDateTimeForegroundColor:
+                                    FlutterFlowTheme.of(context).info,
+                                actionButtonForegroundColor:
+                                    FlutterFlowTheme.of(context).primaryText,
+                                iconSize: 24.0,
+                              );
+                            },
+                          );
+                        }
+
+                        if (_datePicked1Date != null &&
+                            _datePicked1Time != null) {
+                          safeSetState(() {
+                            _model.datePicked1 = DateTime(
+                              _datePicked1Date.year,
+                              _datePicked1Date.month,
+                              _datePicked1Date.day,
+                              _datePicked1Time!.hour,
+                              _datePicked1Time.minute,
+                            );
+                          });
+                        } else if (_model.datePicked1 != null) {
+                          safeSetState(() {
+                            _model.datePicked1 = getCurrentTimestamp;
+                          });
+                        }
+                        safeSetState(() {
+                          _model.textFieldDatumStartTextController?.text =
+                              _model.datePicked1!.toString();
+                        });
+                      },
+                      autofocus: false,
+                      enabled: true,
+                      readOnly: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          'dfa8vusy' /* Datum */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          '7vogkwoh' /* Datum */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldDatumStartTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldDatumEindTextController,
+                      focusNode: _model.textFieldDatumEindFocusNode,
+                      onFieldSubmitted: (_) async {
+                        final _datePicked2Date = await showDatePicker(
+                          context: context,
+                          initialDate: getCurrentTimestamp,
+                          firstDate: getCurrentTimestamp,
+                          lastDate: DateTime(2050),
+                          builder: (context, child) {
+                            return wrapInMaterialDatePickerTheme(
+                              context,
+                              child!,
+                              headerBackgroundColor:
+                                  FlutterFlowTheme.of(context).primary,
+                              headerForegroundColor:
+                                  FlutterFlowTheme.of(context).info,
+                              headerTextStyle: FlutterFlowTheme.of(context)
+                                  .headlineLarge
+                                  .override(
+                                    font: GoogleFonts.interTight(
+                                      fontWeight: FontWeight.w600,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .headlineLarge
+                                          .fontStyle,
+                                    ),
+                                    fontSize: 32.0,
+                                    letterSpacing: 0.0,
+                                    fontWeight: FontWeight.w600,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .headlineLarge
+                                        .fontStyle,
+                                  ),
+                              pickerBackgroundColor:
+                                  FlutterFlowTheme.of(context)
+                                      .secondaryBackground,
+                              pickerForegroundColor:
+                                  FlutterFlowTheme.of(context).primaryText,
+                              selectedDateTimeBackgroundColor:
+                                  FlutterFlowTheme.of(context).primary,
+                              selectedDateTimeForegroundColor:
+                                  FlutterFlowTheme.of(context).info,
+                              actionButtonForegroundColor:
+                                  FlutterFlowTheme.of(context).primaryText,
+                              iconSize: 24.0,
+                            );
+                          },
+                        );
+
+                        TimeOfDay? _datePicked2Time;
+                        if (_datePicked2Date != null) {
+                          _datePicked2Time = await showTimePicker(
+                            context: context,
+                            initialTime:
+                                TimeOfDay.fromDateTime(getCurrentTimestamp),
+                            builder: (context, child) {
+                              return wrapInMaterialTimePickerTheme(
+                                context,
+                                child!,
+                                headerBackgroundColor:
+                                    FlutterFlowTheme.of(context).primary,
+                                headerForegroundColor:
+                                    FlutterFlowTheme.of(context).info,
+                                headerTextStyle: FlutterFlowTheme.of(context)
+                                    .headlineLarge
+                                    .override(
+                                      font: GoogleFonts.interTight(
+                                        fontWeight: FontWeight.w600,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .headlineLarge
+                                            .fontStyle,
+                                      ),
+                                      fontSize: 32.0,
+                                      letterSpacing: 0.0,
+                                      fontWeight: FontWeight.w600,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .headlineLarge
+                                          .fontStyle,
+                                    ),
+                                pickerBackgroundColor:
+                                    FlutterFlowTheme.of(context)
+                                        .secondaryBackground,
+                                pickerForegroundColor:
+                                    FlutterFlowTheme.of(context).primaryText,
+                                selectedDateTimeBackgroundColor:
+                                    FlutterFlowTheme.of(context).primary,
+                                selectedDateTimeForegroundColor:
+                                    FlutterFlowTheme.of(context).info,
+                                actionButtonForegroundColor:
+                                    FlutterFlowTheme.of(context).primaryText,
+                                iconSize: 24.0,
+                              );
+                            },
+                          );
+                        }
+
+                        if (_datePicked2Date != null &&
+                            _datePicked2Time != null) {
+                          safeSetState(() {
+                            _model.datePicked2 = DateTime(
+                              _datePicked2Date.year,
+                              _datePicked2Date.month,
+                              _datePicked2Date.day,
+                              _datePicked2Time!.hour,
+                              _datePicked2Time.minute,
+                            );
+                          });
+                        } else if (_model.datePicked2 != null) {
+                          safeSetState(() {
+                            _model.datePicked2 = getCurrentTimestamp;
+                          });
+                        }
+                        safeSetState(() {
+                          _model.textFieldDatumEindTextController?.text =
+                              _model.datePicked2!.toString();
+                        });
+                      },
+                      autofocus: false,
+                      enabled: true,
+                      readOnly: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          '71z3uvd8' /* Datum eind */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          '1k52hayg' /* Datum eind */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldDatumEindTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldOmschrijvingTextController,
+                      focusNode: _model.textFieldOmschrijvingFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          'vc73ugaq' /* Omschrijving */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'k4jw1fl6' /* Omschrijving activiteit */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldOmschrijvingTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldOrganisatorTextController,
+                      focusNode: _model.textFieldOrganisatorFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          '7dy1oyjr' /* Organisator */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'nxfif83l' /* Organisator van de activiteit */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldOrganisatorTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldContactTextController,
+                      focusNode: _model.textFieldContactFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          '06lh8r3a' /* Contact */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'p3rwq60m' /* Contact email/telefoon */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model.textFieldContactTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldAdresTextController,
+                      focusNode: _model.textFieldAdresFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          '5ehouxlk' /* Adres */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          '4czd99zl' /* Adres */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model.textFieldAdresTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldPostcodeTextController,
+                      focusNode: _model.textFieldPostcodeFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          'oo7z1mp8' /* Postcode */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'j9h65a88' /* Postcode */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model.textFieldPostcodeTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldPlaatsTextController,
+                      focusNode: _model.textFieldPlaatsFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          '825wzmk4' /* Plaats */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'np527mil' /* Plaats activiteit */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model.textFieldPlaatsTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller: _model.textFieldEntreeprijsTextController,
+                      focusNode: _model.textFieldEntreeprijsFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          'pftju36e' /* Entreeprijs */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'fyltb801' /* Entreeprijs */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldEntreeprijsTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: double.infinity,
+                    child: TextFormField(
+                      controller:
+                          _model.textFieldToelichtingEntreeTextController,
+                      focusNode: _model.textFieldToelichtingEntreeFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          '0brx7n79' /* Toelichting Entree */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldToelichtingEntreeTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                  Container(
+                    width: 200.0,
+                    child: TextFormField(
+                      controller: _model.textFieldWebsiteURLTextController,
+                      focusNode: _model.textFieldWebsiteURLFocusNode,
+                      autofocus: false,
+                      enabled: true,
+                      obscureText: false,
+                      decoration: InputDecoration(
+                        isDense: true,
+                        labelText: FFLocalizations.of(context).getText(
+                          'i66ori1d' /* WebsiteURL */,
+                        ),
+                        labelStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        hintText: FFLocalizations.of(context).getText(
+                          'bhydpd6h' /* Website van de activiteit */,
+                        ),
+                        hintStyle:
+                            FlutterFlowTheme.of(context).labelMedium.override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .labelMedium
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .labelMedium
+                                      .fontStyle,
+                                ),
+                        enabledBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: Color(0x00000000),
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        errorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        focusedErrorBorder: OutlineInputBorder(
+                          borderSide: BorderSide(
+                            color: FlutterFlowTheme.of(context).error,
+                            width: 1.0,
+                          ),
+                          borderRadius: BorderRadius.circular(8.0),
+                        ),
+                        filled: true,
+                        fillColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      style: FlutterFlowTheme.of(context).bodyMedium.override(
+                            font: GoogleFonts.inter(
+                              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,
+                          ),
+                      cursorColor: FlutterFlowTheme.of(context).primaryText,
+                      enableInteractiveSelection: true,
+                      validator: _model
+                          .textFieldWebsiteURLTextControllerValidator
+                          .asValidator(context),
+                    ),
+                  ),
+                ],
+              ),
+            ),
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 2 - 2
lib/uitgaanspaginas/home/home_widget.dart

@@ -125,9 +125,9 @@ class _HomeWidgetState extends State<HomeWidget>
           ),
         ),
         appBar: PreferredSize(
-          preferredSize: Size.fromHeight(80.0),
+          preferredSize: Size.fromHeight(50.0),
           child: AppBar(
-            backgroundColor: FlutterFlowTheme.of(context).info,
+            backgroundColor: Color(0xFF3E454C),
             iconTheme: IconThemeData(color: Color(0xFFB12727)),
             automaticallyImplyLeading: false,
             actions: [],

+ 15 - 8
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart

@@ -252,14 +252,21 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                           borderRadius:
                                               BorderRadius.circular(8.0),
                                           child: OctoImage(
-                                            placeholderBuilder: (_) =>
-                                                SizedBox.expand(
-                                              child: Image(
-                                                image: BlurHashImage(
-                                                    'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                                fit: BoxFit.cover,
-                                              ),
-                                            ),
+                                            placeholderBuilder: (_) {
+                                              final blurHash =
+                                                  'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                              if (!validateBlurhash(blurHash)) {
+                                                return const SizedBox.shrink();
+                                              }
+                                              return SizedBox.expand(
+                                                child: Image(
+                                                  image:
+                                                      BlurHashImage(blurHash),
+                                                  fit: BoxFit.cover,
+                                                ),
+                                              );
+                                            },
                                             image: CachedNetworkImageProvider(
                                               getJsonField(
                                                 evenementenItem,

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

@@ -122,9 +122,9 @@ class _PUitgaanPageWidgetState extends State<PUitgaanPageWidget>
           ),
         ),
         appBar: PreferredSize(
-          preferredSize: Size.fromHeight(80.0),
+          preferredSize: Size.fromHeight(50.0),
           child: AppBar(
-            backgroundColor: FlutterFlowTheme.of(context).info,
+            backgroundColor: Color(0xFF3E454C),
             iconTheme: IconThemeData(color: Color(0xFFB12727)),
             automaticallyImplyLeading: false,
             actions: [],
@@ -142,33 +142,7 @@ class _PUitgaanPageWidgetState extends State<PUitgaanPageWidget>
                   }),
                 ),
               ),
-              background: Align(
-                alignment: AlignmentDirectional(0.0, 0.0),
-                child: Padding(
-                  padding: EdgeInsetsDirectional.fromSTEB(60.0, 0.0, 5.0, 0.0),
-                  child: ClipRRect(
-                    borderRadius: BorderRadius.circular(8.0),
-                    child: Image.asset(
-                      'assets/images/logo800px.png',
-                      width: () {
-                        if (MediaQuery.sizeOf(context).width <
-                            kBreakpointSmall) {
-                          return 200.0;
-                        } else if (MediaQuery.sizeOf(context).width <
-                            kBreakpointMedium) {
-                          return 250.0;
-                        } else if (MediaQuery.sizeOf(context).width <
-                            kBreakpointLarge) {
-                          return 350.0;
-                        } else {
-                          return 400.0;
-                        }
-                      }(),
-                      fit: BoxFit.fitWidth,
-                    ),
-                  ),
-                ),
-              ),
+              background: Container(),
               centerTitle: true,
               expandedTitleScale: 1.0,
             ),

+ 14 - 7
lib/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart

@@ -192,13 +192,20 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                               return ClipRRect(
                                 borderRadius: BorderRadius.circular(8.0),
                                 child: OctoImage(
-                                  placeholderBuilder: (_) => SizedBox.expand(
-                                    child: Image(
-                                      image: BlurHashImage(
-                                          'L6PZfSi_.AyE_3t7t7R**0o#DgR4'),
-                                      fit: BoxFit.cover,
-                                    ),
-                                  ),
+                                  placeholderBuilder: (_) {
+                                    final blurHash =
+                                        'L6PZfSi_.AyE_3t7t7R**0o#DgR4';
+
+                                    if (!validateBlurhash(blurHash)) {
+                                      return const SizedBox.shrink();
+                                    }
+                                    return SizedBox.expand(
+                                      child: Image(
+                                        image: BlurHashImage(blurHash),
+                                        fit: BoxFit.cover,
+                                      ),
+                                    );
+                                  },
                                   image: CachedNetworkImageProvider(
                                     widget!.logo!.toString(),
                                   ),

+ 202 - 18
pubspec.lock

@@ -1,6 +1,14 @@
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
 packages:
+  _flutterfire_internals:
+    dependency: transitive
+    description:
+      name: _flutterfire_internals
+      sha256: dda4fd7909a732a014239009aa52537b136f8ce568de23c212587097887e2307
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.56"
   aligned_tooltip:
     dependency: "direct main"
     description:
@@ -138,7 +146,7 @@ packages:
     source: hosted
     version: "3.0.7"
   csslib:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: csslib
       sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
@@ -299,6 +307,110 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "7.0.1"
+  file_picker:
+    dependency: "direct main"
+    description:
+      name: file_picker
+      sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964"
+      url: "https://pub.dev"
+    source: hosted
+    version: "10.1.9"
+  file_selector_linux:
+    dependency: transitive
+    description:
+      name: file_selector_linux
+      sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.9.4"
+  file_selector_macos:
+    dependency: transitive
+    description:
+      name: file_selector_macos
+      sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.9.5"
+  file_selector_platform_interface:
+    dependency: transitive
+    description:
+      name: file_selector_platform_interface
+      sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.7.0"
+  file_selector_windows:
+    dependency: transitive
+    description:
+      name: file_selector_windows
+      sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.9.3+5"
+  firebase_core:
+    dependency: "direct main"
+    description:
+      name: firebase_core
+      sha256: "420d9111dcf095341f1ea8fdce926eef750cf7b9745d21f38000de780c94f608"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.14.0"
+  firebase_core_platform_interface:
+    dependency: "direct main"
+    description:
+      name: firebase_core_platform_interface
+      sha256: d7253d255ff10f85cfd2adaba9ac17bae878fa3ba577462451163bd9f1d1f0bf
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.4.0"
+  firebase_core_web:
+    dependency: "direct main"
+    description:
+      name: firebase_core_web
+      sha256: ddd72baa6f727e5b23f32d9af23d7d453d67946f380bd9c21daf474ee0f7326e
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.23.0"
+  firebase_crashlytics:
+    dependency: "direct main"
+    description:
+      name: firebase_crashlytics
+      sha256: "8cf18604255e964b568e572f1a155b4e3cec9ea31f9043fc51414d33aa444393"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.3.7"
+  firebase_crashlytics_platform_interface:
+    dependency: "direct main"
+    description:
+      name: firebase_crashlytics_platform_interface
+      sha256: aa81684a68a00c41510070b3c2689fb32264f9b31ad50e62e6c7d6aca483a424
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.8.7"
+  firebase_performance:
+    dependency: "direct main"
+    description:
+      name: firebase_performance
+      sha256: "2cdbab6ad8c3ee8bc9e806b250e5aaa9b2b1312ed10ae5d5367b2dc89c2307e3"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.10.1+7"
+  firebase_performance_platform_interface:
+    dependency: "direct main"
+    description:
+      name: firebase_performance_platform_interface
+      sha256: a8c2f68d40b2f2c40cbba12e349d0c94a5feb74d06baaf275b201817ea9c8cc5
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.1.5+7"
+  firebase_performance_web:
+    dependency: "direct main"
+    description:
+      name: firebase_performance_web
+      sha256: "040ea6082dd5968a1d73e40fd5bf8e8fcdb3067b22e20f2d9901c8b4fba3dfb7"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.1.7+13"
   fixnum:
     dependency: transitive
     description:
@@ -357,6 +469,14 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_plugin_android_lifecycle:
+    dependency: "direct main"
+    description:
+      name: flutter_plugin_android_lifecycle
+      sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.28"
   flutter_secure_storage:
     dependency: "direct main"
     description:
@@ -578,7 +698,7 @@ packages:
     source: hosted
     version: "6.0.0"
   html:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: html
       sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
@@ -601,6 +721,70 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "4.1.2"
+  image_picker:
+    dependency: "direct main"
+    description:
+      name: image_picker
+      sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.2"
+  image_picker_android:
+    dependency: "direct main"
+    description:
+      name: image_picker_android
+      sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.8.12+23"
+  image_picker_for_web:
+    dependency: "direct main"
+    description:
+      name: image_picker_for_web
+      sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.6"
+  image_picker_ios:
+    dependency: "direct main"
+    description:
+      name: image_picker_ios
+      sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.8.12+2"
+  image_picker_linux:
+    dependency: "direct main"
+    description:
+      name: image_picker_linux
+      sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.2.1+2"
+  image_picker_macos:
+    dependency: "direct main"
+    description:
+      name: image_picker_macos
+      sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.2.1+2"
+  image_picker_platform_interface:
+    dependency: "direct main"
+    description:
+      name: image_picker_platform_interface
+      sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.10.1"
+  image_picker_windows:
+    dependency: "direct main"
+    description:
+      name: image_picker_windows
+      sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.2.1+1"
   infinite_scroll_pagination:
     dependency: "direct main"
     description:
@@ -898,7 +1082,7 @@ packages:
     source: hosted
     version: "3.1.6"
   plugin_platform_interface:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: plugin_platform_interface
       sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
@@ -1303,45 +1487,45 @@ packages:
     source: hosted
     version: "2.2.0"
   video_player:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: video_player
-      sha256: "096bc28ce10d131be80dfb00c223024eb0fba301315a406728ab43dd99c45bdf"
+      sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a"
       url: "https://pub.dev"
     source: hosted
-    version: "2.10.1"
+    version: "2.10.0"
   video_player_android:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: video_player_android
-      sha256: "877a6c7ba772456077d7bfd71314629b3fe2b73733ce503fc77c3314d43a0ca0"
+      sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73"
       url: "https://pub.dev"
     source: hosted
-    version: "2.9.5"
+    version: "2.8.7"
   video_player_avfoundation:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: video_player_avfoundation
-      sha256: d1eb970495a76abb35e5fa93ee3c58bd76fb6839e2ddf2fbb636674f2b971dd4
+      sha256: "9ee764e5cd2fc1e10911ae8ad588e1a19db3b6aa9a6eb53c127c42d3a3c3f22f"
       url: "https://pub.dev"
     source: hosted
-    version: "2.8.9"
+    version: "2.7.1"
   video_player_platform_interface:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: video_player_platform_interface
-      sha256: "16eaed5268c571c31840dc58ef8da5f0cd4db2a98490c3b8f1cf70122546c6e0"
+      sha256: df534476c341ab2c6a835078066fc681b8265048addd853a1e3c78740316a844
       url: "https://pub.dev"
     source: hosted
-    version: "6.7.0"
+    version: "6.3.0"
   video_player_web:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: video_player_web
-      sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb"
+      sha256: e8bba2e5d1e159d5048c9a491bb2a7b29c535c612bb7d10c1e21107f5bd365ba
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.0"
+    version: "2.3.5"
   vm_service:
     dependency: transitive
     description:

+ 26 - 0
pubspec.yaml

@@ -35,6 +35,7 @@ dependencies:
   carousel_slider: 5.0.0
   collection: ^1.18.0
   cross_file: 0.3.5+1
+  csslib: 1.0.2
   csv: 6.0.0
   debug_panel_proto: 
     git:
@@ -49,10 +50,20 @@ dependencies:
   equatable: 2.0.7
   fetch_api: 2.2.0
   fetch_client: 1.1.2
+  file_picker: 10.1.9
+  firebase_core: 3.14.0
+  firebase_core_platform_interface: 5.4.0
+  firebase_core_web: 2.23.0
+  firebase_crashlytics: 4.3.7
+  firebase_crashlytics_platform_interface: 3.8.7
+  firebase_performance: 0.10.1+7
+  firebase_performance_platform_interface: 0.1.5+7
+  firebase_performance_web: 0.1.7+13
   flutter_animate: 4.5.0
   flutter_blurhash: 0.9.1
   flutter_cache_manager: 3.4.1
   flutter_html:
+  flutter_plugin_android_lifecycle: 2.0.28
   flutter_secure_storage: 10.0.0-beta.4
   flutter_secure_storage_linux: 2.0.1
   flutter_secure_storage_macos: 4.0.0
@@ -67,7 +78,16 @@ dependencies:
   go_router: 12.1.3
   google_fonts: 6.3.3
   google_mobile_ads: 6.0.0
+  html: 0.15.6
   http: 1.4.0
+  image_picker: 1.1.2
+  image_picker_android: 0.8.12+23
+  image_picker_for_web: 3.0.6
+  image_picker_ios: 0.8.12+2
+  image_picker_linux: 0.2.1+2
+  image_picker_macos: 0.2.1+2
+  image_picker_platform_interface: 2.10.1
+  image_picker_windows: 0.2.1+1
   infinite_scroll_pagination: 4.0.0
   intl: 0.20.2
   json_path: 0.7.2
@@ -80,6 +100,7 @@ dependencies:
   path_provider_linux: 2.2.1
   path_provider_platform_interface: 2.1.2
   path_provider_windows: 2.3.0
+  plugin_platform_interface: 2.1.8
   provider: 6.1.5
   share_plus: 10.0.2
   share_plus_platform_interface: 5.0.0
@@ -102,6 +123,11 @@ dependencies:
   url_launcher_platform_interface: 2.3.2
   url_launcher_web: 2.4.1
   url_launcher_windows: 3.1.4
+  video_player: 2.10.0
+  video_player_android: 2.8.7
+  video_player_avfoundation: 2.7.1
+  video_player_platform_interface: 6.3.0
+  video_player_web: 2.3.5
 
   # The following adds the Cupertino Icons font to your application.
   # Use with the CupertinoIcons class for iOS style icons.

+ 1 - 1
web/index.html

@@ -53,7 +53,7 @@
 </head>
 <body>
   
-  
+  <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCloQC-px_QG64LCIeAjad_qa_VKDnMjC0"></script>