瀏覽代碼

Verse FF-export 14 sep: standaard header+Drawer op 4 pagina's, provinciepagina null-veilig + Max Items 1000, horeca-grids gelijk, verbindingsbanner, datumvelden stadsactiviteit

Legt het builder-werk van 2026-09-14 vast dat nog niet in lib/ stond.
android/ bewust niet meegenomen: de export schrijft daar de oude
gradle-syntax terug die Flutter-tooling eerder gemigreerd had.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
bob 16 小時之前
父節點
當前提交
bf8e640270
共有 31 個文件被更改,包括 1471 次插入287 次删除
  1. 4 4
      ios/Runner.xcodeproj/project.pbxproj
  2. 18 0
      lib/app_state.dart
  3. 33 10
      lib/backend/api_requests/api_calls.dart
  4. 1 1
      lib/components/header_buttons_component_model.dart
  5. 18 3
      lib/components/header_buttons_component_widget.dart
  6. 49 0
      lib/custom_code/actions/check_verbinding.dart
  7. 1 0
      lib/custom_code/actions/index.dart
  8. 1 0
      lib/custom_code/widgets/index.dart
  9. 165 0
      lib/custom_code/widgets/verbindings_banner.dart
  10. 2 2
      lib/favorieten/favorieten_widget.dart
  11. 39 137
      lib/flutter_flow/internationalization.dart
  12. 0 37
      lib/flutter_flow/nav/nav.dart
  13. 50 13
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horecagelegenheden_overzicht_current_widget.dart
  14. 49 30
      lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_provincie_page/horecagelegenheden_overzicht_provincie_page_widget.dart
  15. 0 6
      lib/index.dart
  16. 56 0
      lib/kanweg/header_buttons_component_copy/header_buttons_component_copy_model.dart
  17. 244 0
      lib/kanweg/header_buttons_component_copy/header_buttons_component_copy_widget.dart
  18. 18 1
      lib/mijn_profiel/mijn_profiel_model.dart
  19. 44 6
      lib/mijn_profiel/mijn_profiel_widget.dart
  20. 2 2
      lib/selecteer_plaats/select_state_drop_down_component/select_state_drop_down_component_widget.dart
  21. 18 0
      lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_model.dart
  22. 72 15
      lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart
  23. 18 0
      lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_model.dart
  24. 66 12
      lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_widget.dart
  25. 6 4
      lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart
  26. 92 0
      lib/uitgaanspaginas/home_uitgaan_slider_component_copy/home_uitgaan_slider_component_copy_model.dart
  27. 331 0
      lib/uitgaanspaginas/home_uitgaan_slider_component_copy/home_uitgaan_slider_component_copy_widget.dart
  28. 6 4
      lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart
  29. 5 0
      lib/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart
  30. 18 0
      lib/wachtwoord_vergeten/wachtwoord_vergeten_model.dart
  31. 45 0
      lib/wachtwoord_vergeten/wachtwoord_vergeten_widget.dart

+ 4 - 4
ios/Runner.xcodeproj/project.pbxproj

@@ -49,8 +49,8 @@
 		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>"; };
-		6436409127A31CD900820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409427A31CDD00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409427A31CD800820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409D27A31CD600820AF7 /* 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; };
@@ -317,8 +317,8 @@
 		6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
-				6436409127A31CD900820AF7 /* nl */,
-				6436409427A31CDD00820AF7 /* en */,
+				6436409427A31CD800820AF7 /* nl */,
+				6436409D27A31CD600820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 18 - 0
lib/app_state.dart

@@ -568,6 +568,14 @@ class FFAppState extends ChangeNotifier {
     debugLogAppState(this);
   }
 
+  bool _geenVerbinding = false;
+  bool get geenVerbinding => _geenVerbinding;
+  set geenVerbinding(bool value) {
+    _geenVerbinding = value;
+
+    debugLogAppState(this);
+  }
+
   Map<String, DebugDataField> toDebugSerializableMap() => {
         'userToken': debugSerializeParam(
           userToken,
@@ -785,6 +793,16 @@ class FFAppState extends ChangeNotifier {
               'reference=Ch4KFgoKYXBpQmFzZVVybBIIbnQ1cXFuZW5yAggDegBaCmFwaUJhc2VVcmw=',
           name: 'String',
           nullable: false,
+        ),
+        'geenVerbinding': debugSerializeParam(
+          geenVerbinding,
+          ParamType.bool,
+          link:
+              'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=appValues&appValuesTab=state',
+          searchReference:
+              'reference=CiIKGgoOZ2VlblZlcmJpbmRpbmcSCG55azcxaWgxcgIIBXoAWg5nZWVuVmVyYmluZGluZw==',
+          name: 'bool',
+          nullable: false,
         )
       };
 }

+ 33 - 10
lib/backend/api_requests/api_calls.dart

@@ -117,13 +117,13 @@ class CategorieenCall {
 
 /// End productie Group Code
 
-class FavorietenAgendaCall {
+class KANWEGFavorietenAgendaCall {
   static Future<ApiCallResponse> call({
     String? sessionName = '',
     String? sessid = '',
   }) async {
     return ApiManager.instance.makeApiCall(
-      callName: 'FavorietenAgenda',
+      callName: 'KANWEGFavorietenAgenda',
       apiUrl:
           'https://uitgaanskrant.com/nl/flutterdrup/views/flutterfavorietenagenda.json?display_id=services_1',
       callType: ApiCallType.GET,
@@ -181,10 +181,10 @@ class FavorietenAgendaCall {
       ));
 }
 
-class FavorietenAgendaTESTKANWEGCall {
+class KANWEGFavorietenAgendaTESTKANWEGCall {
   static Future<ApiCallResponse> call() async {
     return ApiManager.instance.makeApiCall(
-      callName: 'FavorietenAgendaTESTKANWEG',
+      callName: 'KANWEGFavorietenAgendaTESTKANWEG',
       apiUrl:
           'https://uitgaanskrant.com/nl/cookie-testcda.php?display_id=services_1',
       callType: ApiCallType.GET,
@@ -396,6 +396,11 @@ class HomeSliderCall {
         response,
         r'''$[:].horecagelegenheidid''',
       ));
+  static List? items(dynamic response) => getJsonField(
+        response,
+        r'''$[:]''',
+        true,
+      ) as List?;
 }
 
 class UitgaanstabelCall {
@@ -560,6 +565,11 @@ class UitgaanSliderCall {
         response,
         r'''$[:].horecagelegenheidid''',
       ));
+  static List? items(dynamic response) => getJsonField(
+        response,
+        r'''$[:]''',
+        true,
+      ) as List?;
 }
 
 class EstablishmentInfoCall {
@@ -876,16 +886,24 @@ class ProvinciesCall {
     );
   }
 
-  static String? provincieId(dynamic response) =>
-      castToType<String>(getJsonField(
+  static List<String>? provincieId(dynamic response) => (getJsonField(
         response,
         r'''$[:].provincieid''',
-      ));
-  static String? provincieName(dynamic response) =>
-      castToType<String>(getJsonField(
+        true,
+      ) as List?)
+          ?.withoutNulls
+          .map((x) => castToType<String>(x))
+          .withoutNulls
+          .toList();
+  static List<String>? provincieName(dynamic response) => (getJsonField(
         response,
         r'''$[:].provinciename''',
-      ));
+        true,
+      ) as List?)
+          ?.withoutNulls
+          .map((x) => castToType<String>(x))
+          .withoutNulls
+          .toList();
   static List<String>? provinciedescription(dynamic response) => (getJsonField(
         response,
         r'''$[:].provinciedescription''',
@@ -1054,6 +1072,11 @@ class HorecagelegenheidoverzichtCall {
         r'''$[:].categorie''',
         true,
       ) as List?;
+  static List? items(dynamic response) => getJsonField(
+        response,
+        r'''$[:]''',
+        true,
+      ) as List?;
 }
 
 class RequestNewPasswordCall {

+ 1 - 1
lib/components/header_buttons_component_model.dart

@@ -2,7 +2,7 @@ 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/widgets/index.dart' as custom_widgets;
 import '/index.dart';
 import 'header_buttons_component_widget.dart' show HeaderButtonsComponentWidget;
 import 'package:aligned_tooltip/aligned_tooltip.dart';

+ 18 - 3
lib/components/header_buttons_component_widget.dart

@@ -2,7 +2,7 @@ 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/widgets/index.dart' as custom_widgets;
 import '/index.dart';
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';
@@ -102,8 +102,15 @@ class _HeaderButtonsComponentWidgetState
 
     return Align(
       alignment: AlignmentDirectional(0.0, 0.0),
-      child: Row(
-        mainAxisSize: MainAxisSize.max,
+      child: 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: [
           AlignedTooltip(
             content: Padding(
@@ -237,6 +244,14 @@ class _HeaderButtonsComponentWidgetState
                   ),
             ),
           ),
+          Container(
+            width: 2.0,
+            height: 2.0,
+            child: custom_widgets.VerbindingsBanner(
+              width: 2.0,
+              height: 2.0,
+            ),
+          ),
         ],
       ),
     );

+ 49 - 0
lib/custom_code/actions/check_verbinding.dart

@@ -0,0 +1,49 @@
+// 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 'package:http/http.dart' as http;
+
+/// Kijkt of de server bereikbaar is en zet App State `geenVerbinding`.
+///
+/// Geeft true terug als de verbinding in orde is.
+///
+/// Bewust een HEAD-request op de site-root: die levert 0 bytes body op en
+/// antwoordt in ongeveer 60 ms, dus dit is verwaarloosbaar naast de gewone
+/// data-calls. We kijken alleen of de server antwoordt, niet wat hij zegt.
+Future<bool> checkVerbinding() async {
+  final basis = FFAppState().apiBaseUrl.trim().isEmpty
+      ? 'https://uitgaanskrant.com'
+      : FFAppState().apiBaseUrl.trim();
+
+  bool bereikbaar;
+  try {
+    final response =
+        await http.head(Uri.parse(basis)).timeout(const Duration(seconds: 6));
+    // Elke echte HTTP-reactie betekent dat we de server hebben bereikt.
+    // Alleen een 5xx rekenen we als 'niet bruikbaar'.
+    bereikbaar = response.statusCode < 500;
+  } catch (_) {
+    // Geen netwerk, DNS-fout, timeout, certificaatfout: allemaal 'geen verbinding'.
+    bereikbaar = false;
+  }
+
+  final nieuweWaarde = !bereikbaar;
+  if (FFAppState().geenVerbinding != nieuweWaarde) {
+    // update() roept notifyListeners() aan; zonder dat merkt de banner niets.
+    FFAppState().update(() {
+      FFAppState().geenVerbinding = nieuweWaarde;
+    });
+  }
+
+  return bereikbaar;
+}
+
+// Set your action name, define your arguments and return parameter,
+// and then add the boilerplate code using the `</>` button on the right!

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

@@ -5,3 +5,4 @@ export 'bestand_upload.dart' show bestandUpload;
 export 'stadsactiviteit_create.dart' show stadsactiviteitCreate;
 export 'fetch_alle_horecagelegenheden.dart' show fetchAlleHorecagelegenheden;
 export 'evenement_create.dart' show evenementCreate;
+export 'check_verbinding.dart' show checkVerbinding;

+ 1 - 0
lib/custom_code/widgets/index.dart

@@ -1 +1,2 @@
 export 'from_h_t_m_l.dart' show FromHTML;
+export 'verbindings_banner.dart' show VerbindingsBanner;

+ 165 - 0
lib/custom_code/widgets/verbindings_banner.dart

@@ -0,0 +1,165 @@
+// 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 widgets
+import '/custom_code/actions/index.dart'; // Imports custom actions
+import '/flutter_flow/custom_functions.dart'; // Imports custom functions
+import 'package:flutter/material.dart';
+// Begin custom widget code
+// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
+
+// Set your widget name, define your parameter, and then add the
+// boilerplate code using the `</>` button on the right!
+
+import 'package:go_router/go_router.dart';
+// ⬇⬇⬇ PLAK VANAF HIER ⬇⬇⬇
+
+/// Toont een melding zodra de server onbereikbaar is.
+///
+/// Het widget zelf neemt **geen ruimte** in de layout in (`SizedBox.shrink`):
+/// de header van dit project zit in een `FlexibleSpaceBar.background` met een
+/// vaste hoogte, dus een balk die wél ruimte vraagt geeft daar gegarandeerd een
+/// RenderFlex-overflow. In plaats daarvan gaat de melding via de
+/// `ScaffoldMessenger` over de pagina heen. Daardoor kan het widget op één
+/// plek in de gedeelde header staan en werkt het op elke pagina.
+///
+/// Waarom een custom widget en geen Text met een Visibility-conditie: de
+/// widgets in dit project lezen App State via de singleton `FFAppState()`,
+/// niet via `context.watch`. Een gewone conditie zou dus pas opnieuw evalueren
+/// als er toevallig iets anders een rebuild veroorzaakt. Dit widget luistert
+/// zelf naar FFAppState.
+class VerbindingsBanner extends StatefulWidget {
+  const VerbindingsBanner({
+    super.key,
+    this.width,
+    this.height,
+    this.tekst,
+  });
+
+  final double? width;
+  final double? height;
+  final String? tekst;
+
+  @override
+  State<VerbindingsBanner> createState() => _VerbindingsBannerState();
+}
+
+class _VerbindingsBannerState extends State<VerbindingsBanner> {
+  // Statisch, dus gedeeld over alle instanties: bij doorklikken tussen
+  // pagina's wordt niet bij elke opbouw opnieuw een verzoek gedaan, en er
+  // verschijnt nooit meer dan één balk tegelijk.
+  static DateTime? _laatsteCheck;
+  static const Duration _minimaalTussenChecks = Duration(seconds: 20);
+  static bool _balkStaatAl = false;
+
+  bool _bezig = false;
+
+  @override
+  void initState() {
+    super.initState();
+    FFAppState().addListener(_bijStateWijziging);
+    WidgetsBinding.instance.addPostFrameCallback((_) async {
+      await _checkIndienNodig();
+      _werkBalkBij();
+    });
+  }
+
+  @override
+  void dispose() {
+    FFAppState().removeListener(_bijStateWijziging);
+    super.dispose();
+  }
+
+  void _bijStateWijziging() {
+    if (mounted) _werkBalkBij();
+  }
+
+  void _werkBalkBij() {
+    final messenger = ScaffoldMessenger.maybeOf(context);
+    if (messenger == null) return;
+
+    if (!FFAppState().geenVerbinding) {
+      if (_balkStaatAl) {
+        _balkStaatAl = false;
+        messenger.hideCurrentSnackBar();
+      }
+      return;
+    }
+
+    if (_balkStaatAl) return;
+    _balkStaatAl = true;
+    messenger
+        .showSnackBar(
+          SnackBar(
+            backgroundColor: FlutterFlowTheme.of(context).primary,
+            // Praktisch oneindig: de balk hoort te blijven staan zolang er
+            // geen verbinding is, niet na een paar seconden te verdwijnen.
+            duration: const Duration(days: 1),
+            content: Row(
+              mainAxisSize: MainAxisSize.max,
+              children: [
+                const Icon(Icons.cloud_off, color: Colors.white, size: 18.0),
+                const SizedBox(width: 8.0),
+                Expanded(
+                  child: Text(
+                    widget.tekst ?? 'Geen verbinding met uitgaanskrant.com',
+                    style: const TextStyle(color: Colors.white, fontSize: 13.0),
+                  ),
+                ),
+              ],
+            ),
+            action: SnackBarAction(
+              // Bewust een vast label: een SnackBar bouwt niet opnieuw op, dus
+              // een status-afhankelijke tekst blijft hangen op de stand van het
+              // moment waarop hij getoond werd.
+              label: 'Opnieuw',
+              textColor: Colors.white,
+              onPressed: _check,
+            ),
+          ),
+        )
+        .closed
+        .then((_) {
+      // Ook als de gebruiker hem zelf wegveegt, mag er later weer één komen.
+      _balkStaatAl = false;
+    });
+  }
+
+  Future<void> _checkIndienNodig() async {
+    final vorige = _laatsteCheck;
+    if (vorige != null &&
+        DateTime.now().difference(vorige) < _minimaalTussenChecks) {
+      return;
+    }
+    await _check(herlaadBijHerstel: false);
+  }
+
+  /// [herlaadBijHerstel] staat alleen aan bij een tik van de gebruiker.
+  /// Automatisch herladen zou een lus opleveren: de pagina bouwt het widget
+  /// opnieuw op, dat checkt weer, enzovoort.
+  Future<void> _check({bool herlaadBijHerstel = true}) async {
+    if (_bezig) return;
+    _bezig = true;
+    _laatsteCheck = DateTime.now();
+    bool bereikbaar = false;
+    try {
+      bereikbaar = await checkVerbinding();
+    } finally {
+      _bezig = false;
+    }
+    if (bereikbaar && herlaadBijHerstel && mounted) {
+      // De FutureBuilders op deze pagina zijn al klaar met een mislukte
+      // respons; alleen de balk weghalen laat een leeg scherm achter.
+      // Daarom de huidige route opnieuw opbouwen, zodat de data alsnog laadt.
+      final huidigePad = GoRouterState.of(context).uri.toString();
+      context.pushReplacement(huidigePad);
+    }
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    // Neemt bewust geen ruimte in: de melding gaat via de ScaffoldMessenger.
+    return const SizedBox.shrink();
+  }
+}

+ 2 - 2
lib/favorieten/favorieten_widget.dart

@@ -1037,7 +1037,7 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                       StadsactiviteitAanmakenWidget.routeName);
                                 },
                                 text: FFLocalizations.of(context).getText(
-                                  'fbl4ak2y' /* stadsactiviteit aanmaken */,
+                                  'fbl4ak2y' /* Stadsactiviteit aanmaken */,
                                 ),
                                 options: FFButtonOptions(
                                   height: 40.0,
@@ -1045,7 +1045,7 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                       16.0, 0.0, 16.0, 0.0),
                                   iconPadding: EdgeInsetsDirectional.fromSTEB(
                                       0.0, 0.0, 0.0, 0.0),
-                                  color: FlutterFlowTheme.of(context).primary,
+                                  color: FlutterFlowTheme.of(context).secondary,
                                   textStyle: FlutterFlowTheme.of(context)
                                       .titleSmall
                                       .override(

+ 39 - 137
lib/flutter_flow/internationalization.dart

@@ -478,7 +478,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
     'fbl4ak2y': {
-      'nl': 'stadsactiviteit aanmaken',
+      'nl': 'Stadsactiviteit aanmaken',
       'en': 'Create city activity',
     },
     'vpqh55o7': {
@@ -601,12 +601,12 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': 'Search...',
     },
     'b6ndrvbq': {
-      'nl': 'Option 1',
-      'en': '',
+      'nl': 'Optie 1',
+      'en': 'Option 1',
     },
     '5wvybd3x': {
-      'nl': 'Option 2',
-      'en': '',
+      'nl': 'Optie 2',
+      'en': 'Option 2',
     },
     '93nr01v9': {
       'nl': 'Option 3',
@@ -645,7 +645,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
     'sv5qajjt': {
-      'nl': 'Stadseditor',
+      'nl': 'Of kies zelf een plaats',
       'en': '',
     },
     'dqeuq7t8': {
@@ -797,115 +797,6 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': 'Home',
     },
   },
-  // HorecagelegenhedenOverzichtCopy
-  {
-    '9h6jfdei': {
-      'nl': 'Activiteiten',
-      'en': 'Activiteiten',
-    },
-    'ndvhb9rw': {
-      'nl': 'TextField',
-      'en': '',
-    },
-    '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',
-    },
-    '3rvk9enz': {
-      'nl': 'Hello World',
-      'en': '',
-    },
-    '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': '',
-    },
-  },
   // kanwegHomeCopy
   {
     'l7r0djaf': {
@@ -969,7 +860,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     'jcyx82pa': {
       'nl': 'Option 1',
-      'en': '',
+      'en': 'Optie 1',
     },
     '53q8buz0': {
       'nl': 'Option 2',
@@ -1208,44 +1099,44 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
   // SelectStateDropDownComponent
   {
     'duloakue': {
-      'nl': 'Select...',
-      'en': '',
+      'nl': 'Selecteer...',
+      'en': 'Select...',
     },
     'suwn4gos': {
-      'nl': 'Search...',
-      'en': '',
+      'nl': 'Zoek...',
+      'en': 'Search...',
     },
     'xtp0toaj': {
-      'nl': 'Option 1',
-      'en': '',
+      'nl': 'Optie 1',
+      'en': 'Option 1',
     },
     'sfmdjcb4': {
-      'nl': 'Option 2',
-      'en': '',
+      'nl': 'Optie 2',
+      'en': 'Option 2',
     },
     'pbmts7dk': {
-      'nl': 'Option 3',
-      'en': '',
+      'nl': 'Optie 3',
+      'en': 'Option 3',
     },
     '1rva6d4m': {
-      'nl': 'Select...',
-      'en': '',
+      'nl': 'Selecteer...',
+      'en': 'Select...',
     },
     'um0h0p25': {
-      'nl': 'Search...',
-      'en': '',
+      'nl': 'Zoek...',
+      'en': 'Search...',
     },
     'fjaz0tsc': {
-      'nl': 'Option 1',
-      'en': '',
+      'nl': 'Optie 1',
+      'en': 'Option 1',
     },
     '8hcfb8cu': {
-      'nl': 'Option 2',
-      'en': '',
+      'nl': 'Optie 2',
+      'en': 'Option 2',
     },
     'cpdux64t': {
-      'nl': 'Option 3',
-      'en': '',
+      'nl': 'Optie 3',
+      'en': 'Option 3',
     },
     'nosgkxy0': {
       'nl': 'Gemeente volgen',
@@ -1254,7 +1145,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     '24bdnkhi': {
       'nl':
           'Bij favoriete gemeenten krijg je een agenda per mail met daarin alle evenementen uit die favoriete gemeenten.',
-      'en': '',
+      'en': 'Get a weekly mail of all your favorite municipalities.',
     },
     'p3ia66ku': {
       'nl': 'Toepassen',
@@ -1761,6 +1652,17 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': 'v0001',
     },
   },
+  // HeaderButtonsComponentCopy
+  {
+    '2hj132xq': {
+      'nl': 'Menu openen',
+      'en': 'Open Menu',
+    },
+    '7ktnxpcu': {
+      'nl': 'Terug',
+      'en': 'Back',
+    },
+  },
   // Miscellaneous
   {
     '1wdja323': {

+ 0 - 37
lib/flutter_flow/nav/nav.dart

@@ -61,12 +61,6 @@ const debugRouteLinkMap = {
       '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',
   '/kanwegHomeCopy':
       'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwegHomeCopy',
   '/uitgaansevenementAanmaken':
@@ -276,37 +270,6 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
           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,
-            ),
-          ),
-        ),
         FFRoute(
           name: KanwegHomeCopyWidget.routeName,
           path: KanwegHomeCopyWidget.routePath,

+ 50 - 13
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_current/horecagelegenheden_overzicht_current_widget.dart

@@ -559,8 +559,13 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                   '\$.titel',
                                                   '\$.categorie')
                                               .toList()
-                                              .take(25)
+                                              .take(1000)
                                               .toList();
+                                          if (horecagelegenheden.isEmpty) {
+                                            return Image.asset(
+                                              'assets/images/logo800px.png',
+                                            );
+                                          }
                                           _model.debugGeneratorVariables[
                                                   'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                               debugSerializeParam(
@@ -760,8 +765,14 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                       '\$.titel',
                                                       '\$.categorie')
                                                   .toList()
-                                                  .take(25)
+                                                  .take(1000)
                                                   .toList();
+                                          if (horecagelegenhedenCultuur
+                                              .isEmpty) {
+                                            return Image.asset(
+                                              'assets/images/logo800px.png',
+                                            );
+                                          }
                                           _model.debugGeneratorVariables[
                                                   'horecagelegenhedenCultuur${horecagelegenhedenCultuur.length > 100 ? ' (first 100)' : ''}'] =
                                               debugSerializeParam(
@@ -778,9 +789,27 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                           return MasonryGridView.builder(
                                             gridDelegate:
                                                 SliverSimpleGridDelegateWithFixedCrossAxisCount(
-                                              crossAxisCount: 2,
+                                              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: 10.0,
+                                            crossAxisSpacing: 12.0,
                                             mainAxisSpacing: 10.0,
                                             itemCount: horecagelegenhedenCultuur
                                                 .length,
@@ -947,7 +976,7 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                         '\$.titel',
                                                         '\$.categorie')
                                                     .toList()
-                                                    .take(25)
+                                                    .take(1000)
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
@@ -1181,7 +1210,7 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                         '\$.titel',
                                                         '\$.categorie')
                                                     .toList()
-                                                    .take(25)
+                                                    .take(1000)
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
@@ -1416,7 +1445,7 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
                                                         '\$.titel',
                                                         '\$.categorie')
                                                     .toList()
-                                                    .take(25)
+                                                    .take(1000)
                                                     .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
@@ -1639,12 +1668,20 @@ class _HorecagelegenhedenOverzichtCurrentWidgetState
 
                                             return Builder(
                                               builder: (context) {
-                                                final horecagelegenheden =
-                                                    getJsonField(
-                                                  staggeredViewHorecagelegenheidoverzichtResponse
-                                                      .jsonBody,
-                                                  r'''$''',
-                                                ).toList().take(25).toList();
+                                                final horecagelegenheden = functions
+                                                    .filterHorecagelegenheden(
+                                                        _model
+                                                            .alleVerhuurCatering
+                                                            .toList(),
+                                                        _model.textController
+                                                            .text,
+                                                        _model
+                                                            .categorieFilterActiviteiten,
+                                                        '\$.titel',
+                                                        '\$.categorie')
+                                                    .toList()
+                                                    .take(1000)
+                                                    .toList();
                                                 if (horecagelegenheden
                                                     .isEmpty) {
                                                   return Image.asset(

+ 49 - 30
lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_provincie_page/horecagelegenheden_overzicht_provincie_page_widget.dart

@@ -341,11 +341,15 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
 
                                     return Builder(
                                       builder: (context) {
-                                        final horecagelegenheden = getJsonField(
-                                          staggeredViewHorecagelegenheidoverzichtResponse
-                                              .jsonBody,
-                                          r'''$''',
-                                        ).toList().take(25).toList();
+                                        final horecagelegenheden =
+                                            (HorecagelegenheidoverzichtCall
+                                                        .items(
+                                                      staggeredViewHorecagelegenheidoverzichtResponse
+                                                          .jsonBody,
+                                                    )?.toList() ??
+                                                    [])
+                                                .take(1000)
+                                                .toList();
                                         _model.debugGeneratorVariables[
                                                 'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                             debugSerializeParam(
@@ -527,11 +531,14 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                           return Builder(
                                             builder: (context) {
                                               final horecagelegenheden =
-                                                  getJsonField(
-                                                staggeredViewHorecagelegenheidoverzichtResponse
-                                                    .jsonBody,
-                                                r'''$''',
-                                              ).toList().take(25).toList();
+                                                  (HorecagelegenheidoverzichtCall
+                                                              .items(
+                                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                                .jsonBody,
+                                                          )?.toList() ??
+                                                          [])
+                                                      .take(1000)
+                                                      .toList();
                                               _model.debugGeneratorVariables[
                                                       'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                                   debugSerializeParam(
@@ -742,11 +749,14 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                           return Builder(
                                             builder: (context) {
                                               final horecagelegenheden =
-                                                  getJsonField(
-                                                staggeredViewHorecagelegenheidoverzichtResponse
-                                                    .jsonBody,
-                                                r'''$''',
-                                              ).toList().take(25).toList();
+                                                  (HorecagelegenheidoverzichtCall
+                                                              .items(
+                                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                                .jsonBody,
+                                                          )?.toList() ??
+                                                          [])
+                                                      .take(1000)
+                                                      .toList();
                                               _model.debugGeneratorVariables[
                                                       'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                                   debugSerializeParam(
@@ -957,11 +967,14 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                           return Builder(
                                             builder: (context) {
                                               final horecagelegenheden =
-                                                  getJsonField(
-                                                staggeredViewHorecagelegenheidoverzichtResponse
-                                                    .jsonBody,
-                                                r'''$''',
-                                              ).toList().take(25).toList();
+                                                  (HorecagelegenheidoverzichtCall
+                                                              .items(
+                                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                                .jsonBody,
+                                                          )?.toList() ??
+                                                          [])
+                                                      .take(1000)
+                                                      .toList();
                                               _model.debugGeneratorVariables[
                                                       'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                                   debugSerializeParam(
@@ -1173,11 +1186,14 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                           return Builder(
                                             builder: (context) {
                                               final horecagelegenheden =
-                                                  getJsonField(
-                                                staggeredViewHorecagelegenheidoverzichtResponse
-                                                    .jsonBody,
-                                                r'''$''',
-                                              ).toList().take(25).toList();
+                                                  (HorecagelegenheidoverzichtCall
+                                                              .items(
+                                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                                .jsonBody,
+                                                          )?.toList() ??
+                                                          [])
+                                                      .take(1000)
+                                                      .toList();
                                               _model.debugGeneratorVariables[
                                                       'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                                   debugSerializeParam(
@@ -1388,11 +1404,14 @@ class _HorecagelegenhedenOverzichtProvinciePageWidgetState
                                           return Builder(
                                             builder: (context) {
                                               final horecagelegenheden =
-                                                  getJsonField(
-                                                staggeredViewHorecagelegenheidoverzichtResponse
-                                                    .jsonBody,
-                                                r'''$''',
-                                              ).toList().take(25).toList();
+                                                  (HorecagelegenheidoverzichtCall
+                                                              .items(
+                                                            staggeredViewHorecagelegenheidoverzichtResponse
+                                                                .jsonBody,
+                                                          )?.toList() ??
+                                                          [])
+                                                      .take(1000)
+                                                      .toList();
                                               _model.debugGeneratorVariables[
                                                       'horecagelegenheden${horecagelegenheden.length > 100 ? ' (first 100)' : ''}'] =
                                                   debugSerializeParam(

+ 0 - 6
lib/index.dart

@@ -26,12 +26,6 @@ export '/kanweg_test_upload/kanweg_test_upload_widget.dart'
 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;
 export '/kanweg/kanweg_home_copy/kanweg_home_copy_widget.dart'
     show KanwegHomeCopyWidget;
 export '/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_widget.dart'

+ 56 - 0
lib/kanweg/header_buttons_component_copy/header_buttons_component_copy_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 '/index.dart';
+import 'header_buttons_component_copy_widget.dart'
+    show HeaderButtonsComponentCopyWidget;
+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 HeaderButtonsComponentCopyModel
+    extends FlutterFlowModel<HeaderButtonsComponentCopyWidget> {
+  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=HeaderButtonsComponentCopy',
+            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=HeaderButtonsComponentCopy',
+        searchReference:
+            'reference=OhpIZWFkZXJCdXR0b25zQ29tcG9uZW50Q29weVAAWhpIZWFkZXJCdXR0b25zQ29tcG9uZW50Q29weQ==',
+        widgetClassName: 'HeaderButtonsComponentCopy',
+      );
+}

+ 244 - 0
lib/kanweg/header_buttons_component_copy/header_buttons_component_copy_widget.dart

@@ -0,0 +1,244 @@
+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 '/index.dart';
+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_copy_model.dart';
+export 'header_buttons_component_copy_model.dart';
+
+/// Standaard header-knoppen (drawer + terug) voor herbruik op alle pagina's
+class HeaderButtonsComponentCopyWidget extends StatefulWidget {
+  const HeaderButtonsComponentCopyWidget({
+    super.key,
+    bool? showBackButton,
+  }) : this.showBackButton = showBackButton ?? true;
+
+  final bool showBackButton;
+
+  @override
+  State<HeaderButtonsComponentCopyWidget> createState() =>
+      _HeaderButtonsComponentCopyWidgetState();
+}
+
+class _HeaderButtonsComponentCopyWidgetState
+    extends State<HeaderButtonsComponentCopyWidget> with RouteAware {
+  late HeaderButtonsComponentCopyModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => HeaderButtonsComponentCopyModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HeaderButtonsComponentCopyWidget 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(
+                  '2hj132xq' /* Menu openen */,
+                ),
+                style: FlutterFlowTheme.of(context).bodyLarge.override(
+                      font: GoogleFonts.roboto(
+                        fontWeight:
+                            FlutterFlowTheme.of(context).bodyLarge.fontWeight,
+                        fontStyle:
+                            FlutterFlowTheme.of(context).bodyLarge.fontStyle,
+                      ),
+                      letterSpacing: 0.0,
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyLarge.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyLarge.fontStyle,
+                    ),
+              ),
+            ),
+            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: FlutterFlowTheme.of(context).secondary,
+              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(
+                    '7ktnxpcu' /* Terug */,
+                  ),
+                  style: FlutterFlowTheme.of(context).bodyLarge.override(
+                        font: GoogleFonts.roboto(
+                          fontWeight:
+                              FlutterFlowTheme.of(context).bodyLarge.fontWeight,
+                          fontStyle:
+                              FlutterFlowTheme.of(context).bodyLarge.fontStyle,
+                        ),
+                        letterSpacing: 0.0,
+                        fontWeight:
+                            FlutterFlowTheme.of(context).bodyLarge.fontWeight,
+                        fontStyle:
+                            FlutterFlowTheme.of(context).bodyLarge.fontStyle,
+                      ),
+                ),
+              ),
+              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: FlutterFlowTheme.of(context).secondary,
+                  icon: Icon(
+                    Icons.arrow_back_outlined,
+                    color: Colors.white,
+                    size: 30.0,
+                  ),
+                  onPressed: () async {
+                    context.pop();
+                  },
+                ),
+              ),
+            ),
+          ClipRRect(
+            borderRadius: BorderRadius.circular(8.0),
+            child: Image.asset(
+              'assets/images/logo800px.png',
+              width: 200.0,
+              height: 200.0,
+              fit: BoxFit.contain,
+            ),
+          ),
+          InkWell(
+            splashColor: Colors.transparent,
+            focusColor: Colors.transparent,
+            hoverColor: Colors.transparent,
+            highlightColor: Colors.transparent,
+            onTap: () async {
+              context.pushNamed(SelectprovinciegemeenteWidget.routeName);
+            },
+            child: Text(
+              FFAppState().gemeenteSelectNaam,
+              style: FlutterFlowTheme.of(context).bodyMedium.override(
+                    font: GoogleFonts.roboto(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                  ),
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 18 - 1
lib/mijn_profiel/mijn_profiel_model.dart

@@ -1,8 +1,10 @@
 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 '/index.dart';
 import 'mijn_profiel_widget.dart' show MijnProfielWidget;
@@ -16,23 +18,38 @@ class MijnProfielModel extends FlutterFlowModel<MijnProfielWidget> {
 
   // Models for HorecagelegenheidoverzichtKaart dynamic component.
   Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels = {};
+  // 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() {}
+  void dispose() {
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
+  }
 
   @override
   WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
           ...widgetBuilderComponents.map(
             (key, value) => MapEntry(
               key,

+ 44 - 6
lib/mijn_profiel/mijn_profiel_widget.dart

@@ -1,8 +1,10 @@
 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 '/index.dart';
 import 'package:flutter/material.dart';
@@ -100,12 +102,48 @@ class _MijnProfielWidgetState extends State<MijnProfielWidget> with RouteAware {
       child: Scaffold(
         key: scaffoldKey,
         backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
-        appBar: AppBar(
-          backgroundColor: FlutterFlowTheme.of(context).primary,
-          automaticallyImplyLeading: true,
-          actions: [],
-          centerTitle: true,
-          elevation: 0.0,
+        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,
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(
+                      showBackButton: true,
+                    ),
+                  );
+                }),
+              ),
+              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,

+ 2 - 2
lib/selecteer_plaats/select_state_drop_down_component/select_state_drop_down_component_widget.dart

@@ -262,7 +262,7 @@ class _SelectStateDropDownComponentWidgetState
                         FlutterFlowTheme.of(context).bodyMedium.fontStyle,
                   ),
               hintText: FFLocalizations.of(context).getText(
-                'duloakue' /* Select... */,
+                'duloakue' /* Selecteer... */,
               ),
               icon: Icon(
                 Icons.keyboard_arrow_down_rounded,
@@ -316,7 +316,7 @@ class _SelectStateDropDownComponentWidgetState
                         FlutterFlowTheme.of(context).bodyMedium.fontStyle,
                   ),
               hintText: FFLocalizations.of(context).getText(
-                '1rva6d4m' /* Select... */,
+                '1rva6d4m' /* Selecteer... */,
               ),
               icon: Icon(
                 Icons.keyboard_arrow_down_rounded,

+ 18 - 0
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_model.dart

@@ -1,10 +1,12 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_drop_down.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/form_field_controller.dart';
 import '/flutter_flow/upload_data.dart';
+import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
 import '/backend/schema/structs/index.dart';
 import '/custom_code/actions/index.dart' as actions;
@@ -296,11 +298,20 @@ class StadsactiviteitAanmakenModel
 
   dynamic? get createResult => _createResult;
 
+  // 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);
   }
 
@@ -341,6 +352,9 @@ class StadsactiviteitAanmakenModel
 
     textFieldEntreeprijsFocusNode?.dispose();
     textFieldEntreeprijsTextController?.dispose();
+
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
   }
 
   @override
@@ -616,6 +630,10 @@ class StadsactiviteitAanmakenModel
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
           ...widgetBuilderComponents.map(
             (key, value) => MapEntry(
               key,

+ 72 - 15
lib/stadsactiviteit_aanmaken/stadsactiviteit_aanmaken_widget.dart

@@ -1,10 +1,12 @@
 import '/backend/api_requests/api_calls.dart';
+import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_drop_down.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/form_field_controller.dart';
 import '/flutter_flow/upload_data.dart';
+import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
 import '/backend/schema/structs/index.dart';
 import '/custom_code/actions/index.dart' as actions;
@@ -178,12 +180,48 @@ class _StadsactiviteitAanmakenWidgetState
       child: Scaffold(
         key: scaffoldKey,
         backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
-        appBar: AppBar(
-          backgroundColor: FlutterFlowTheme.of(context).primary,
-          automaticallyImplyLeading: true,
-          actions: [],
-          centerTitle: true,
-          elevation: 0.0,
+        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,
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(
+                      showBackButton: true,
+                    ),
+                  );
+                }),
+              ),
+              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,
@@ -862,7 +900,12 @@ class _StadsactiviteitAanmakenWidgetState
                                 }
                                 safeSetState(() {
                                   _model.textFieldDatumStartTextController
-                                      ?.text = _model.datePicked1!.toString();
+                                      ?.text = dateTimeFormat(
+                                    "dd-MM-yyyy HH:mm",
+                                    _model.datePicked1,
+                                    locale: FFLocalizations.of(context)
+                                        .languageCode,
+                                  );
                                 });
                               },
                               child: Container(
@@ -1134,7 +1177,15 @@ class _StadsactiviteitAanmakenWidgetState
                                 }
                                 safeSetState(() {
                                   _model.textFieldDatumEindTextController
-                                      ?.text = _model.datePicked2!.toString();
+                                      ?.text = valueOrDefault<String>(
+                                    dateTimeFormat(
+                                      "dd-MM-yyyy HH:mm",
+                                      _model.datePicked2,
+                                      locale: FFLocalizations.of(context)
+                                          .languageCode,
+                                    ),
+                                    'dd-MM-yyyy HH:mm',
+                                  );
                                 });
                               },
                               child: Container(
@@ -1472,7 +1523,7 @@ class _StadsactiviteitAanmakenWidgetState
                             ),
                             Text(
                               FFLocalizations.of(context).getText(
-                                'sv5qajjt' /* Stadseditor */,
+                                'sv5qajjt' /* Of kies zelf een plaats */,
                               ),
                               style: FlutterFlowTheme.of(context)
                                   .bodyMedium
@@ -3391,7 +3442,7 @@ class _StadsactiviteitAanmakenWidgetState
                                                   .fontStyle,
                                         ),
                                     elevation: 0.0,
-                                    borderRadius: BorderRadius.circular(0.0),
+                                    borderRadius: BorderRadius.circular(8.0),
                                   ),
                                 ),
                               ),
@@ -3549,7 +3600,7 @@ class _StadsactiviteitAanmakenWidgetState
                                                     .fontStyle,
                                           ),
                                       elevation: 0.0,
-                                      borderRadius: BorderRadius.circular(0.0),
+                                      borderRadius: BorderRadius.circular(8.0),
                                     ),
                                   ),
                                 ),
@@ -3616,10 +3667,16 @@ class _StadsactiviteitAanmakenWidgetState
                           FFAppState().userToken,
                           _model.textFieldTitelTextController.text,
                           _model.createPlaatsID!,
-                          functions.datumVoorApi(
-                              _model.textFieldDatumStartTextController.text)!,
-                          functions.datumVoorApi(
-                              _model.textFieldDatumEindTextController.text),
+                          dateTimeFormat(
+                            "yyyy-MM-dd HH:mm:ss",
+                            _model.datePicked1,
+                            locale: FFLocalizations.of(context).languageCode,
+                          ),
+                          dateTimeFormat(
+                            "yyyy-MM-dd HH:mm:ss",
+                            _model.datePicked2,
+                            locale: FFLocalizations.of(context).languageCode,
+                          ),
                           _model.textFieldOmschrijvingTextController.text,
                           _model.textFieldOrganisatorTextController.text,
                           _model.textFieldContactTextController.text,

+ 18 - 0
lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_model.dart

@@ -1,11 +1,13 @@
 import '/backend/api_requests/api_calls.dart';
 import '/backend/api_requests/api_streaming.dart';
+import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_drop_down.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/form_field_controller.dart';
 import '/flutter_flow/upload_data.dart';
+import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:convert';
 import 'dart:ui';
 import '/custom_code/actions/index.dart' as actions;
@@ -240,11 +242,20 @@ class UitgaansevenementAanmakenModel
 
   dynamic? get createResult => _createResult;
 
+  // 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);
   }
 
@@ -273,6 +284,9 @@ class UitgaansevenementAanmakenModel
 
     textFieldEntreeprijsFocusNode?.dispose();
     textFieldEntreeprijsTextController?.dispose();
+
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
   }
 
   @override
@@ -492,6 +506,10 @@ class UitgaansevenementAanmakenModel
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
           ...widgetBuilderComponents.map(
             (key, value) => MapEntry(
               key,

+ 66 - 12
lib/uitgaansevenement_aanmaken/uitgaansevenement_aanmaken_widget.dart

@@ -1,11 +1,13 @@
 import '/backend/api_requests/api_calls.dart';
 import '/backend/api_requests/api_streaming.dart';
+import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_drop_down.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/flutter_flow/form_field_controller.dart';
 import '/flutter_flow/upload_data.dart';
+import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:convert';
 import 'dart:ui';
 import '/custom_code/actions/index.dart' as actions;
@@ -174,12 +176,48 @@ class _UitgaansevenementAanmakenWidgetState
       child: Scaffold(
         key: scaffoldKey,
         backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
-        appBar: AppBar(
-          backgroundColor: FlutterFlowTheme.of(context).primary,
-          automaticallyImplyLeading: true,
-          actions: [],
-          centerTitle: true,
-          elevation: 0.0,
+        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,
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(
+                      showBackButton: true,
+                    ),
+                  );
+                }),
+              ),
+              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,
@@ -1073,7 +1111,12 @@ class _UitgaansevenementAanmakenWidgetState
                                 }
                                 safeSetState(() {
                                   _model.textFieldDatumStartTextController
-                                      ?.text = _model.datePicked1!.toString();
+                                      ?.text = dateTimeFormat(
+                                    "dd-MM-yyyy HH:mm",
+                                    _model.datePicked1,
+                                    locale: FFLocalizations.of(context)
+                                        .languageCode,
+                                  );
                                 });
                               },
                               child: Container(
@@ -1345,7 +1388,12 @@ class _UitgaansevenementAanmakenWidgetState
                                 }
                                 safeSetState(() {
                                   _model.textFieldDatumEindTextController
-                                      ?.text = _model.datePicked2!.toString();
+                                      ?.text = dateTimeFormat(
+                                    "dd-MM-yyyy HH:mm",
+                                    _model.datePicked2,
+                                    locale: FFLocalizations.of(context)
+                                        .languageCode,
+                                  );
                                 });
                               },
                               child: Container(
@@ -2713,10 +2761,16 @@ class _UitgaansevenementAanmakenWidgetState
                           FFAppState().userToken,
                           _model.createHorecagelegenheidNid!,
                           _model.textFieldTitelTextController.text,
-                          functions.datumVoorApi(
-                              _model.textFieldDatumStartTextController.text)!,
-                          functions.datumVoorApi(
-                              _model.textFieldDatumEindTextController.text),
+                          dateTimeFormat(
+                            "yyyy-MM-dd HH:mm:ss",
+                            _model.datePicked1,
+                            locale: FFLocalizations.of(context).languageCode,
+                          ),
+                          dateTimeFormat(
+                            "yyyy-MM-dd HH:mm:ss",
+                            _model.datePicked2,
+                            locale: FFLocalizations.of(context).languageCode,
+                          ),
                           _model.textFieldOmschrijvingTextController.text,
                           _model.createEntreeTid,
                           _model.textFieldEntreeprijsTextController.text,

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

@@ -158,10 +158,12 @@ class _HomeUitgaanSliderComponentWidgetState
 
                     return Builder(
                       builder: (context) {
-                        final homeslider = getJsonField(
-                          carouselHomeSliderResponse.jsonBody,
-                          r'''$''',
-                        ).toList().take(12).toList();
+                        final homeslider = (HomeSliderCall.items(
+                                  carouselHomeSliderResponse.jsonBody,
+                                )?.toList() ??
+                                [])
+                            .take(12)
+                            .toList();
                         if (homeslider.isEmpty) {
                           return Image.asset(
                             'assets/images/logo800px.png',

+ 92 - 0
lib/uitgaanspaginas/home_uitgaan_slider_component_copy/home_uitgaan_slider_component_copy_model.dart

@@ -0,0 +1,92 @@
+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 '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
+import '/index.dart';
+import 'home_uitgaan_slider_component_copy_widget.dart'
+    show HomeUitgaanSliderComponentCopyWidget;
+import 'package:carousel_slider/carousel_slider.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 HomeUitgaanSliderComponentCopyModel
+    extends FlutterFlowModel<HomeUitgaanSliderComponentCopyWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // State field(s) for Carousel widget.
+  CarouselSliderController? carouselController;
+  int _carouselCurrentIndex = 1;
+  set carouselCurrentIndex(int value) {
+    _carouselCurrentIndex = value;
+    debugLogWidgetClass(this);
+  }
+
+  int get carouselCurrentIndex => _carouselCurrentIndex;
+
+  // Models for PUitgaanSliderKaartComponent dynamic component.
+  Map<String, FlutterFlowModel> pUitgaanSliderKaartComponentModels = {};
+
+  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: {
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponentCopy',
+            searchReference:
+                'reference=ShsKEwoJZGlzcGxheWlkEgZ3ZWF3cmhyBAgDIABQAFoJZGlzcGxheWlk',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        widgetStates: {
+          'carouselCurrentIndex': debugSerializeParam(
+            carouselCurrentIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponentCopy',
+            name: 'int',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'pUitgaanSliderKaartComponentModels (List<PUitgaanSliderKaartComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(pUitgaanSliderKaartComponentModels.length,
+                  (index) => '[$index]'),
+              pUitgaanSliderKaartComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=HomeUitgaanSliderComponentCopy',
+        searchReference:
+            'reference=Oh5Ib21lVWl0Z2FhblNsaWRlckNvbXBvbmVudENvcHlQAFoeSG9tZVVpdGdhYW5TbGlkZXJDb21wb25lbnRDb3B5',
+        widgetClassName: 'HomeUitgaanSliderComponentCopy',
+      );
+}

+ 331 - 0
lib/uitgaanspaginas/home_uitgaan_slider_component_copy/home_uitgaan_slider_component_copy_widget.dart

@@ -0,0 +1,331 @@
+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 '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
+import '/index.dart';
+import 'package:carousel_slider/carousel_slider.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 'home_uitgaan_slider_component_copy_model.dart';
+export 'home_uitgaan_slider_component_copy_model.dart';
+
+class HomeUitgaanSliderComponentCopyWidget extends StatefulWidget {
+  const HomeUitgaanSliderComponentCopyWidget({
+    super.key,
+    this.displayid,
+  });
+
+  final String? displayid;
+
+  @override
+  State<HomeUitgaanSliderComponentCopyWidget> createState() =>
+      _HomeUitgaanSliderComponentCopyWidgetState();
+}
+
+class _HomeUitgaanSliderComponentCopyWidgetState
+    extends State<HomeUitgaanSliderComponentCopyWidget> with RouteAware {
+  late HomeUitgaanSliderComponentCopyModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => HomeUitgaanSliderComponentCopyModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HomeUitgaanSliderComponentCopyWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+    _model.pUitgaanSliderKaartComponentModels.clear();
+
+    return Builder(
+      builder: (context) {
+        if (valueOrDefault<bool>(
+          widget!.displayid == widget!.displayid,
+          true,
+        )) {
+          return Padding(
+            padding: EdgeInsetsDirectional.fromSTEB(0.0, 15.0, 0.0, 15.0),
+            child: Container(
+              width: MediaQuery.sizeOf(context).width * 0.92,
+              height: MediaQuery.sizeOf(context).height * 0.32,
+              decoration: BoxDecoration(
+                shape: BoxShape.rectangle,
+              ),
+              child: Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0),
+                child: FutureBuilder<ApiCallResponse>(
+                  future: HomeSliderCall.call(
+                    displayId: widget!.displayid,
+                  ),
+                  builder: (context, snapshot) {
+                    // Customize what your widget looks like when it's loading.
+                    if (!snapshot.hasData) {
+                      return Center(
+                        child: SizedBox(
+                          width: 80.0,
+                          height: 80.0,
+                          child: SpinKitFadingCircle(
+                            color: FlutterFlowTheme.of(context).primary,
+                            size: 80.0,
+                          ),
+                        ),
+                      );
+                    }
+                    final carouselHomeSliderResponse = snapshot.data!;
+                    _model.debugBackendQueries[
+                            'HomeSliderCall_statusCode_Carousel_lohx8ayf'] =
+                        debugSerializeParam(
+                      carouselHomeSliderResponse.statusCode,
+                      ParamType.int,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponentCopy',
+                      name: 'int',
+                      nullable: false,
+                    );
+                    _model.debugBackendQueries[
+                            'HomeSliderCall_responseBody_Carousel_lohx8ayf'] =
+                        debugSerializeParam(
+                      carouselHomeSliderResponse.bodyText,
+                      ParamType.String,
+                      link:
+                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponentCopy',
+                      name: 'String',
+                      nullable: false,
+                    );
+                    debugLogWidgetClass(_model);
+
+                    return Builder(
+                      builder: (context) {
+                        final homeslider = getJsonField(
+                          carouselHomeSliderResponse.jsonBody,
+                          r'''$''',
+                        ).toList().take(12).toList();
+                        if (homeslider.isEmpty) {
+                          return Image.asset(
+                            'assets/images/logo800px.png',
+                          );
+                        }
+                        _model.debugGeneratorVariables[
+                                'homeslider${homeslider.length > 100 ? ' (first 100)' : ''}'] =
+                            debugSerializeParam(
+                          homeslider.take(100),
+                          ParamType.JSON,
+                          isList: true,
+                          link:
+                              'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponentCopy',
+                          name: 'dynamic',
+                          nullable: false,
+                        );
+                        debugLogWidgetClass(_model);
+
+                        return Container(
+                          width: double.infinity,
+                          height: () {
+                            if (MediaQuery.sizeOf(context).width <
+                                kBreakpointSmall) {
+                              return 180.0;
+                            } else if (MediaQuery.sizeOf(context).width <
+                                kBreakpointMedium) {
+                              return 220.0;
+                            } else if (MediaQuery.sizeOf(context).width <
+                                kBreakpointLarge) {
+                              return 260.0;
+                            } else {
+                              return 300.0;
+                            }
+                          }(),
+                          child: CarouselSlider.builder(
+                            itemCount: homeslider.length,
+                            itemBuilder: (context, homesliderIndex, _) {
+                              final homesliderItem =
+                                  homeslider[homesliderIndex];
+                              return InkWell(
+                                splashColor: Colors.transparent,
+                                focusColor: Colors.transparent,
+                                hoverColor: Colors.transparent,
+                                highlightColor: Colors.transparent,
+                                onTap: () async {
+                                  context.pushNamed(
+                                    EventCurrentWidget.routeName,
+                                    queryParameters: {
+                                      'nid': serializeParam(
+                                        getJsonField(
+                                          homesliderItem,
+                                          r'''$.nid''',
+                                        ).toString(),
+                                        ParamType.String,
+                                      ),
+                                      'horecaid': serializeParam(
+                                        getJsonField(
+                                          homesliderItem,
+                                          r'''$.horecagelegenheidid''',
+                                        ).toString(),
+                                        ParamType.String,
+                                      ),
+                                    }.withoutNulls,
+                                  );
+                                },
+                                child: Stack(
+                                  children: [
+                                    Builder(builder: (_) {
+                                      return DebugFlutterFlowModelContext(
+                                        rootModel: _model.rootModel,
+                                        parentModelCallback: (m) {
+                                          _model.pUitgaanSliderKaartComponentModels[
+                                              'Keyk15_${homesliderIndex}_of_${homeslider.length}'] = m;
+                                        },
+                                        child:
+                                            PUitgaanSliderKaartComponentWidget(
+                                          key: Key(
+                                              'Keyk15_${homesliderIndex}_of_${homeslider.length}'),
+                                          logo: getJsonField(
+                                            homesliderItem,
+                                            r'''$.logo''',
+                                          ).toString(),
+                                          categorie: (getJsonField(
+                                            homesliderItem,
+                                            r'''$.categorie''',
+                                            true,
+                                          ) as List?)
+                                              ?.map<String>((e) => e.toString())
+                                              .toList()
+                                              .cast<String>(),
+                                          titel: getJsonField(
+                                            homesliderItem,
+                                            r'''$.titel''',
+                                          ).toString(),
+                                          datum: getJsonField(
+                                            homesliderItem,
+                                            r'''$.datum''',
+                                          ).toString(),
+                                          horecagelegenheid: getJsonField(
+                                            homesliderItem,
+                                            r'''$.horecagelegenheid''',
+                                          ).toString(),
+                                          adres: getJsonField(
+                                            homesliderItem,
+                                            r'''$.adres''',
+                                          ).toString(),
+                                          plaats: getJsonField(
+                                            homesliderItem,
+                                            r'''$.plaats''',
+                                          ).toString(),
+                                        ),
+                                      );
+                                    }),
+                                  ],
+                                ),
+                              );
+                            },
+                            carouselController: _model.carouselController ??=
+                                CarouselSliderController(),
+                            options: CarouselOptions(
+                              initialPage:
+                                  max(0, min(1, homeslider.length - 1)),
+                              viewportFraction: () {
+                                if (MediaQuery.sizeOf(context).width <
+                                    kBreakpointSmall) {
+                                  return 0.75;
+                                } else if (MediaQuery.sizeOf(context).width <
+                                    kBreakpointMedium) {
+                                  return 0.75;
+                                } else if (MediaQuery.sizeOf(context).width <
+                                    kBreakpointLarge) {
+                                  return 0.5;
+                                } else {
+                                  return 0.35;
+                                }
+                              }(),
+                              disableCenter: true,
+                              enlargeCenterPage: true,
+                              enlargeFactor: 0.25,
+                              enableInfiniteScroll: true,
+                              scrollDirection: Axis.horizontal,
+                              autoPlay: false,
+                              onPageChanged: (index, _) =>
+                                  _model.carouselCurrentIndex = index,
+                            ),
+                          ),
+                        );
+                      },
+                    );
+                  },
+                ),
+              ),
+            ),
+          );
+        } else {
+          return Container(
+            width: 100.0,
+            height: 100.0,
+            decoration: BoxDecoration(
+              color: FlutterFlowTheme.of(context).secondaryBackground,
+            ),
+          );
+        }
+      },
+    );
+  }
+}

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

@@ -155,10 +155,12 @@ class _PUitgaanSliderComponentWidgetState
 
               return Builder(
                 builder: (context) {
-                  final homeslider = getJsonField(
-                    carouselUitgaanSliderResponse.jsonBody,
-                    r'''$''',
-                  ).toList().take(12).toList();
+                  final homeslider = (UitgaanSliderCall.items(
+                            carouselUitgaanSliderResponse.jsonBody,
+                          )?.toList() ??
+                          [])
+                      .take(12)
+                      .toList();
                   if (homeslider.isEmpty) {
                     return Image.asset(
                       'assets/images/logo800px.png',

+ 5 - 0
lib/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart

@@ -215,6 +215,7 @@ class _PUitgaanSliderKaartComponentWidgetState
                                   .titleLarge
                                   .fontStyle,
                             ),
+                        overflow: TextOverflow.ellipsis,
                       ),
                     ),
                     Row(
@@ -271,6 +272,7 @@ class _PUitgaanSliderKaartComponentWidgetState
                               alignment: AlignmentDirectional(-0.98, -0.42),
                               child: Text(
                                 widget!.horecagelegenheid!,
+                                maxLines: 1,
                                 style: FlutterFlowTheme.of(context)
                                     .bodyMedium
                                     .override(
@@ -290,6 +292,7 @@ class _PUitgaanSliderKaartComponentWidgetState
                                           .bodyMedium
                                           .fontStyle,
                                     ),
+                                overflow: TextOverflow.ellipsis,
                               ),
                             ),
                           ),
@@ -315,6 +318,7 @@ class _PUitgaanSliderKaartComponentWidgetState
                                 Text(
                                   '${widget!.adres}, ${widget!.plaats}',
                                   textAlign: TextAlign.start,
+                                  maxLines: 2,
                                   style: FlutterFlowTheme.of(context)
                                       .bodyMedium
                                       .override(
@@ -336,6 +340,7 @@ class _PUitgaanSliderKaartComponentWidgetState
                                             .bodyMedium
                                             .fontStyle,
                                       ),
+                                  overflow: TextOverflow.ellipsis,
                                 ),
                               ],
                             ),

+ 18 - 0
lib/wachtwoord_vergeten/wachtwoord_vergeten_model.dart

@@ -1,8 +1,10 @@
 import '/backend/api_requests/api_calls.dart';
 import '/backend/api_requests/api_streaming.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 '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:convert';
 import 'dart:ui';
 import 'wachtwoord_vergeten_widget.dart' show WachtwoordVergetenWidget;
@@ -29,11 +31,20 @@ class WachtwoordVergetenModel
 
   ApiCallResponse? get apiResultuoz => _apiResultuoz;
 
+  // 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);
   }
 
@@ -41,6 +52,9 @@ class WachtwoordVergetenModel
   void dispose() {
     naamOfEmailFieldFocusNode?.dispose();
     naamOfEmailFieldTextController?.dispose();
+
+    headerButtonsComponentModel.dispose();
+    drawerComponentModel.dispose();
   }
 
   @override
@@ -68,6 +82,10 @@ class WachtwoordVergetenModel
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
+          'headerButtonsComponentModel (HeaderButtonsComponent)':
+              headerButtonsComponentModel?.toWidgetClassDebugData(),
+          'drawerComponentModel (drawerComponent)':
+              drawerComponentModel?.toWidgetClassDebugData(),
           ...widgetBuilderComponents.map(
             (key, value) => MapEntry(
               key,

+ 45 - 0
lib/wachtwoord_vergeten/wachtwoord_vergeten_widget.dart

@@ -1,8 +1,10 @@
 import '/backend/api_requests/api_calls.dart';
 import '/backend/api_requests/api_streaming.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 '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:convert';
 import 'dart:ui';
 import 'package:flutter/material.dart';
@@ -106,6 +108,49 @@ class _WachtwoordVergetenWidgetState extends State<WachtwoordVergetenWidget>
       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,
+            automaticallyImplyLeading: false,
+            actions: [],
+            flexibleSpace: FlexibleSpaceBar(
+              background: wrapWithModel(
+                model: _model.headerButtonsComponentModel,
+                updateCallback: () => safeSetState(() {}),
+                child: Builder(builder: (_) {
+                  return DebugFlutterFlowModelContext(
+                    rootModel: _model.rootModel,
+                    child: HeaderButtonsComponentWidget(
+                      showBackButton: true,
+                    ),
+                  );
+                }),
+              ),
+              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(