瀏覽代碼

Sync export: P1-7 Tab1-crash + drupalRequest-contract fix, login/drawer/i18n-wijzigingen, PUitgaantabelKaartComponent-herstructurering (nieuwe uitgaantabel_kaart-componenten)

Alles al in FlutterFlow gebouwd maar nog niet lokaal gecommit sinds
commit 4a12ffd. Nieuwe componenten (lib/components/uitgaantabel_kaart_*,
p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin,
uitgaanspaginas/uitgaantabel_kaart) horen bij een herstructurering van
PUitgaantabelKaartComponent — nog niet gedocumenteerd in TASKS.md,
navraag bij Bob nodig over doel/status.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 4 周之前
父節點
當前提交
36dd72571e

+ 1 - 1
android/app/build.gradle

@@ -55,7 +55,7 @@ android {
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.uitgaanskrant.app"
-        minSdkVersion 23
+        minSdkVersion flutter.minSdkVersion
         targetSdkVersion 36
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName

+ 2 - 2
android/build.gradle

@@ -43,6 +43,6 @@ subprojects {
     project.evaluationDependsOn(':app')
 }
 
-task clean(type: Delete) {
-    delete rootProject.buildDir
+tasks.register("clean", Delete) {
+    delete rootProject.layout.buildDirectory
 }

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

@@ -44,8 +44,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>"; };
-		6436409627A31CD600820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409827A31CD000820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409E27A31CDF00820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409027A31CD100820AF7 /* 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>"; };
 /* End PBXFileReference section */
 
@@ -225,8 +225,8 @@
 		6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
-				6436409627A31CD600820AF7 /* nl */,
-				6436409827A31CD000820AF7 /* en */,
+				6436409E27A31CDF00820AF7 /* nl */,
+				6436409027A31CD100820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 161 - 0
lib/components/uitgaantabel_kaart_model.dart

@@ -0,0 +1,161 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/index.dart';
+import 'uitgaantabel_kaart_widget.dart' show UitgaantabelKaartWidget;
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class UitgaantabelKaartModel extends FlutterFlowModel<UitgaantabelKaartWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // Models for tagCategorieComponent dynamic component.
+  Map<String, FlutterFlowModel> tagCategorieComponentModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'logo': debugSerializeParam(
+            widget?.logo,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShQKDgoEbG9nbxIGN3Z0NWNwcgIICVAAWgRsb2dv',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'categorie': debugSerializeParam(
+            widget?.categorie,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShkKEwoJY2F0ZWdvcmllEgY1Y3BjanFyAggJUABaCWNhdGVnb3JpZQ==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'titel': debugSerializeParam(
+            widget?.titel,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShUKDwoFdGl0ZWwSBmhpMWlwMXICCAlQAFoFdGl0ZWw=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'horecagelegenheid': debugSerializeParam(
+            widget?.horecagelegenheid,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=SiEKGwoRaG9yZWNhZ2VsZWdlbmhlaWQSBmJndmtmM3ICCAlQAFoRaG9yZWNhZ2VsZWdlbmhlaWQ=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'adres': debugSerializeParam(
+            widget?.adres,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShUKDwoFYWRyZXMSBnZhMHI4OXICCAlQAFoFYWRyZXM=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShYKEAoGcGxhYXRzEgZkODVhZW9yAggJUABaBnBsYWF0cw==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'datum': debugSerializeParam(
+            widget?.datum,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShUKDwoFZGF0dW0SBjl2ZTF4M3ICCAlQAFoFZGF0dW0=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'inhoud': debugSerializeParam(
+            widget?.inhoud,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShYKEAoGaW5ob3VkEgYybXpvZ3FyAggJUABaBmluaG91ZA==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'parameter9': debugSerializeParam(
+            widget?.parameter9,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShoKFAoKcGFyYW1ldGVyORIGbWo4djRhcgIICVAAWgpwYXJhbWV0ZXI5',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'horecagelegenheidNid': debugSerializeParam(
+            widget?.horecagelegenheidNid,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=SiQKHgoUaG9yZWNhZ2VsZWdlbmhlaWROaWQSBjU1emQ5eXICCAlQAFoUaG9yZWNhZ2VsZWdlbmhlaWROaWQ=',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'tagCategorieComponentModels (List<tagCategorieComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  tagCategorieComponentModels.length, (index) => '[$index]'),
+              tagCategorieComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=UitgaantabelKaart',
+        searchReference:
+            'reference=OhFVaXRnYWFudGFiZWxLYWFydFAAWhFVaXRnYWFudGFiZWxLYWFydA==',
+        widgetClassName: 'UitgaantabelKaart',
+      );
+}

+ 541 - 0
lib/components/uitgaantabel_kaart_widget.dart

@@ -0,0 +1,541 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/index.dart';
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'uitgaantabel_kaart_model.dart';
+export 'uitgaantabel_kaart_model.dart';
+
+class UitgaantabelKaartWidget extends StatefulWidget {
+  const UitgaantabelKaartWidget({
+    super.key,
+    this.logo,
+    this.categorie,
+    this.titel,
+    this.horecagelegenheid,
+    this.adres,
+    this.plaats,
+    this.datum,
+    this.inhoud,
+    this.parameter9,
+    this.horecagelegenheidNid,
+  });
+
+  final dynamic logo;
+  final dynamic categorie;
+  final dynamic titel;
+  final dynamic horecagelegenheid;
+  final dynamic adres;
+  final dynamic plaats;
+  final dynamic datum;
+  final dynamic inhoud;
+  final dynamic parameter9;
+  final dynamic horecagelegenheidNid;
+
+  @override
+  State<UitgaantabelKaartWidget> createState() =>
+      _UitgaantabelKaartWidgetState();
+}
+
+class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
+    with RouteAware {
+  late UitgaantabelKaartModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => UitgaantabelKaartModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(UitgaantabelKaartWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+    _model.tagCategorieComponentModels.clear();
+
+    return Padding(
+      padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 12.0),
+      child: InkWell(
+        splashColor: Colors.transparent,
+        focusColor: Colors.transparent,
+        hoverColor: Colors.transparent,
+        highlightColor: Colors.transparent,
+        onTap: () async {
+          context.pushNamed(
+            EventCurrentWidget.routeName,
+            queryParameters: {
+              'nid': serializeParam(
+                widget!.parameter9?.toString(),
+                ParamType.String,
+              ),
+              'horecaid': serializeParam(
+                widget!.horecagelegenheidNid?.toString(),
+                ParamType.String,
+              ),
+            }.withoutNulls,
+          );
+        },
+        child: Container(
+          height: () {
+            if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
+              return 160.0;
+            } else if (MediaQuery.sizeOf(context).width < kBreakpointMedium) {
+              return 200.0;
+            } else if (MediaQuery.sizeOf(context).width < kBreakpointLarge) {
+              return 240.0;
+            } else {
+              return 280.0;
+            }
+          }(),
+          decoration: BoxDecoration(
+            color: Colors.white,
+            boxShadow: [
+              BoxShadow(
+                blurRadius: 4.0,
+                color: Color(0x33000000),
+                offset: Offset(
+                  0.0,
+                  2.0,
+                ),
+              )
+            ],
+            borderRadius: BorderRadius.only(
+              topLeft: Radius.circular(12.0),
+              topRight: Radius.circular(12.0),
+              bottomLeft: Radius.circular(12.0),
+              bottomRight: Radius.circular(12.0),
+            ),
+          ),
+          child: Row(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Expanded(
+                flex: 3,
+                child: Container(
+                  decoration: BoxDecoration(
+                    color: FlutterFlowTheme.of(context).secondaryBackground,
+                  ),
+                  child: Stack(
+                    children: [
+                      Align(
+                        alignment: AlignmentDirectional(0.0, 1.0),
+                        child: Builder(
+                          builder: (context) {
+                            if (widget!.logo != null) {
+                              return ClipRRect(
+                                borderRadius: BorderRadius.circular(8.0),
+                                child: CachedNetworkImage(
+                                  fadeInDuration: Duration(milliseconds: 500),
+                                  fadeOutDuration: Duration(milliseconds: 500),
+                                  imageUrl: widget!.logo!.toString(),
+                                  fit: BoxFit.fitHeight,
+                                ),
+                              );
+                            } else {
+                              return Icon(
+                                Icons.image_not_supported,
+                                color: FlutterFlowTheme.of(context).primaryText,
+                                size: 24.0,
+                              );
+                            }
+                          },
+                        ),
+                      ),
+                      Align(
+                        alignment: AlignmentDirectional(-0.92, 0.76),
+                        child: Padding(
+                          padding: EdgeInsetsDirectional.fromSTEB(
+                              8.0, 4.0, 8.0, 4.0),
+                          child: Container(
+                            decoration: BoxDecoration(),
+                            child: Builder(
+                              builder: (context) {
+                                final categorieitem =
+                                    widget!.categorie?.toList() ?? [];
+                                _model.debugGeneratorVariables[
+                                        'categorieitem${categorieitem.length > 100 ? ' (first 100)' : ''}'] =
+                                    debugSerializeParam(
+                                  categorieitem.take(100),
+                                  ParamType.JSON,
+                                  isList: true,
+                                  link:
+                                      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+                                  name: 'dynamic',
+                                  nullable: false,
+                                );
+                                debugLogWidgetClass(_model);
+
+                                return Wrap(
+                                  spacing: 0.0,
+                                  runSpacing: 0.0,
+                                  alignment: WrapAlignment.start,
+                                  crossAxisAlignment: WrapCrossAlignment.start,
+                                  direction: Axis.horizontal,
+                                  runAlignment: WrapAlignment.start,
+                                  verticalDirection: VerticalDirection.down,
+                                  clipBehavior: Clip.none,
+                                  children: List.generate(categorieitem.length,
+                                      (categorieitemIndex) {
+                                    final categorieitemItem =
+                                        categorieitem[categorieitemIndex];
+                                    return Builder(builder: (_) {
+                                      return DebugFlutterFlowModelContext(
+                                        rootModel: _model.rootModel,
+                                        parentModelCallback: (m) {
+                                          _model.tagCategorieComponentModels[
+                                              'Keynhs_${categorieitemIndex}_of_${categorieitem.length}'] = m;
+                                        },
+                                        child: TagCategorieComponentWidget(
+                                          key: Key(
+                                              'Keynhs_${categorieitemIndex}_of_${categorieitem.length}'),
+                                          categorieTag:
+                                              categorieitemItem.toString(),
+                                        ),
+                                      );
+                                    });
+                                  }),
+                                );
+                              },
+                            ),
+                          ),
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+              Expanded(
+                flex: 6,
+                child: Padding(
+                  padding: EdgeInsetsDirectional.fromSTEB(6.0, 0.0, 0.0, 0.0),
+                  child: ClipRRect(
+                    child: Container(
+                      decoration: BoxDecoration(
+                        color: FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      child: Align(
+                        alignment: AlignmentDirectional(-1.0, 0.0),
+                        child: Column(
+                          mainAxisSize: MainAxisSize.max,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          crossAxisAlignment: CrossAxisAlignment.start,
+                          children: [
+                            Padding(
+                              padding: EdgeInsetsDirectional.fromSTEB(
+                                  0.0, 0.0, 0.0, 5.0),
+                              child: AutoSizeText(
+                                widget!.titel!.toString(),
+                                style: FlutterFlowTheme.of(context)
+                                    .bodyLarge
+                                    .override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyLarge
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyLarge
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .bodyLarge
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .bodyLarge
+                                      .fontStyle,
+                                  shadows: [
+                                    Shadow(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryText,
+                                      offset: Offset(0.0, 0.0),
+                                      blurRadius: 0.0,
+                                    )
+                                  ],
+                                ),
+                                overflow: TextOverflow.ellipsis,
+                              ),
+                            ),
+                            Row(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      2.0, 0.0, 4.0, 0.0),
+                                  child: Icon(
+                                    Icons.add_business_rounded,
+                                    color: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    size: 20.0,
+                                  ),
+                                ),
+                                Flexible(
+                                  child: Text(
+                                    widget!.horecagelegenheid!.toString(),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontStyle,
+                                          ),
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Row(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      2.0, 0.0, 4.0, 0.0),
+                                  child: Icon(
+                                    Icons.location_on_sharp,
+                                    color: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    size: 20.0,
+                                  ),
+                                ),
+                                Flexible(
+                                  child: Text(
+                                    widget!.adres!.toString(),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontStyle,
+                                          ),
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                  ),
+                                ),
+                                Text(
+                                  FFLocalizations.of(context).getText(
+                                    'p3hbyhqm' /* ,  */,
+                                  ),
+                                  style: FlutterFlowTheme.of(context)
+                                      .bodyMedium
+                                      .override(
+                                        font: GoogleFonts.inter(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodyMedium
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodyMedium
+                                                  .fontStyle,
+                                        ),
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .fontStyle,
+                                      ),
+                                ),
+                                Text(
+                                  widget!.plaats!.toString(),
+                                  style: FlutterFlowTheme.of(context)
+                                      .bodySmall
+                                      .override(
+                                        font: GoogleFonts.inter(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontStyle,
+                                      ),
+                                ),
+                              ],
+                            ),
+                            Row(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      2.0, 0.0, 4.0, 0.0),
+                                  child: Icon(
+                                    Icons.calendar_month,
+                                    color: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    size: 20.0,
+                                  ),
+                                ),
+                                Flexible(
+                                  child: Text(
+                                    widget!.datum!.toString(),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontStyle,
+                                          ),
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Expanded(
+                              child: Text(
+                                widget!.inhoud!.toString(),
+                                textAlign: TextAlign.start,
+                                style: FlutterFlowTheme.of(context)
+                                    .bodySmall
+                                    .override(
+                                      font: GoogleFonts.inter(
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontStyle,
+                                      ),
+                                      letterSpacing: 0.0,
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontStyle,
+                                    ),
+                                overflow: TextOverflow.ellipsis,
+                              ),
+                            ),
+                          ],
+                        ),
+                      ),
+                    ),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 3 - 15
lib/custom_code/actions/drupal_request.dart

@@ -131,26 +131,14 @@ Future<dynamic> drupalRequest(
       return data;
     }
 
-    return {
-      'success': false,
-      'statusCode': response.statusCode,
-      'body': data,
-    };
+    return [];
   } on TimeoutException {
-    return {
-      'success': false,
-      'statusCode': 408,
-      'error': 'Timeout',
-    };
+    return [];
   } catch (e, stack) {
     print(e);
     print(stack);
 
-    return {
-      'success': false,
-      'statusCode': 500,
-      'error': e.toString(),
-    };
+    return [];
   }
 }
 // Set your action name, define your arguments and return parameter,

+ 91 - 0
lib/favorieten/favorieten_model.dart

@@ -2,17 +2,54 @@ 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/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/index.dart';
 import 'favorieten_widget.dart' show FavorietenWidget;
 import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
 import 'package:google_fonts/google_fonts.dart';
 import 'package:provider/provider.dart';
 
 class FavorietenModel extends FlutterFlowModel<FavorietenWidget> {
+  ///  Local state fields for this page.
+
+  late LoggableList<dynamic> _favorietenAgenda = LoggableList([]);
+  set favorietenAgenda(List<dynamic> value) {
+    if (value != null) {
+      _favorietenAgenda = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<dynamic> get favorietenAgenda =>
+      _favorietenAgenda?..logger = () => debugLogWidgetClass(this);
+  void addToFavorietenAgenda(dynamic item) => favorietenAgenda.add(item);
+  void removeFromFavorietenAgenda(dynamic item) =>
+      favorietenAgenda.remove(item);
+  void removeAtIndexFromFavorietenAgenda(int index) =>
+      favorietenAgenda.removeAt(index);
+  void insertAtIndexInFavorietenAgenda(int index, dynamic item) =>
+      favorietenAgenda.insert(index, item);
+  void updateFavorietenAgendaAtIndex(int index, Function(dynamic) updateFn) =>
+      favorietenAgenda[index] = updateFn(favorietenAgenda[index]);
+
   ///  State fields for stateful widgets in this page.
 
+  // Stores action output result for [Custom Action - drupalRequest] action in favorieten widget.
+  dynamic? _responseActionDrupalRequestPageLoad;
+  set responseActionDrupalRequestPageLoad(dynamic? value) {
+    _responseActionDrupalRequestPageLoad = value;
+    debugLogWidgetClass(this);
+  }
+
+  dynamic? get responseActionDrupalRequestPageLoad =>
+      _responseActionDrupalRequestPageLoad;
+
   // State field(s) for TabBar widget.
   TabController? tabBarController;
   int get tabBarCurrentIndex =>
@@ -20,6 +57,18 @@ class FavorietenModel extends FlutterFlowModel<FavorietenWidget> {
   int get tabBarPreviousIndex =>
       tabBarController != null ? tabBarController!.previousIndex : 0;
 
+  // Stores action output result for [Custom Action - drupalRequest] action in TabPersAgenda widget.
+  dynamic? _responsActionDrupalRequest;
+  set responsActionDrupalRequest(dynamic? value) {
+    _responsActionDrupalRequest = value;
+    debugLogWidgetClass(this);
+  }
+
+  dynamic? get responsActionDrupalRequest => _responsActionDrupalRequest;
+
+  // Models for UitgaantabelKaart dynamic component.
+  Map<String, FlutterFlowModel> uitgaantabelKaartModels = {};
+
   final Map<String, DebugDataField> debugGeneratorVariables = {};
   final Map<String, DebugDataField> debugBackendQueries = {};
   final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
@@ -35,6 +84,19 @@ class FavorietenModel extends FlutterFlowModel<FavorietenWidget> {
 
   @override
   WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        localStates: {
+          'favorietenAgenda': debugSerializeParam(
+            favorietenAgenda,
+            ParamType.JSON,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten',
+            searchReference:
+                'reference=QiEKGQoQZmF2b3JpZXRlbkFnZW5kYRIFNHd4dmdyBBICCAlQAVoQZmF2b3JpZXRlbkFnZW5kYWIKZmF2b3JpZXRlbg==',
+            name: 'dynamic',
+            nullable: false,
+          )
+        }.entries,
         widgetStates: {
           'tabBarCurrentIndex': debugSerializeParam(
             tabBarCurrentIndex,
@@ -53,6 +115,24 @@ class FavorietenModel extends FlutterFlowModel<FavorietenWidget> {
             nullable: true,
           )
         }.entries,
+        actionOutputs: {
+          'responseActionDrupalRequestPageLoad': debugSerializeParam(
+            responseActionDrupalRequestPageLoad,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'responsActionDrupalRequest': debugSerializeParam(
+            responsActionDrupalRequest,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.entries,
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
@@ -63,6 +143,17 @@ class FavorietenModel extends FlutterFlowModel<FavorietenWidget> {
             ),
           ),
         }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'uitgaantabelKaartModels (List<UitgaantabelKaart>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  uitgaantabelKaartModels.length, (index) => '[$index]'),
+              uitgaantabelKaartModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
         link:
             'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=favorieten',
         searchReference: 'reference=OgpmYXZvcmlldGVuUAFaCmZhdm9yaWV0ZW4=',

+ 124 - 23
lib/favorieten/favorieten_widget.dart

@@ -2,10 +2,14 @@ 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/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/index.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
 import 'package:google_fonts/google_fonts.dart';
 import 'package:provider/provider.dart';
 import 'favorieten_model.dart';
@@ -32,6 +36,21 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
     super.initState();
     _model = createModel(context, () => FavorietenModel());
 
+    // On page load action.
+    SchedulerBinding.instance.addPostFrameCallback((_) async {
+      _model.responseActionDrupalRequestPageLoad = await actions.drupalRequest(
+        'POST',
+        'https://uitgaanskrant.com/nl/flutterdrup/favorieten_agenda.json',
+        FFAppState().userSessionname,
+        FFAppState().userSessionid,
+        FFAppState().userToken,
+        '',
+      );
+      _model.favorietenAgenda =
+          _model.responseActionDrupalRequestPageLoad!.toList().cast<dynamic>();
+      safeSetState(() {});
+    });
+
     _model.tabBarController = TabController(
       vsync: this,
       length: 4,
@@ -99,6 +118,8 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
     DebugFlutterFlowModelContext.maybeOf(context)
         ?.parentModelCallback
         ?.call(_model);
+    context.watch<FFAppState>();
+    _model.uitgaantabelKaartModels.clear();
 
     return GestureDetector(
       onTap: () {
@@ -184,7 +205,24 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                         controller: _model.tabBarController,
                         onTap: (i) async {
                           [
-                            () async {},
+                            () async {
+                              _model.responsActionDrupalRequest =
+                                  await actions.drupalRequest(
+                                'POST',
+                                'https://uitgaanskrant.com/nl/flutterdrup/favorieten_agenda.json',
+                                FFAppState().userSessionname,
+                                FFAppState().userSessionid,
+                                FFAppState().userToken,
+                                '',
+                              );
+                              _model.favorietenAgenda = _model
+                                  .responsActionDrupalRequest!
+                                  .toList()
+                                  .cast<dynamic>();
+                              safeSetState(() {});
+
+                              safeSetState(() {});
+                            },
                             () async {},
                             () async {},
                             () async {}
@@ -199,29 +237,92 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                           Column(
                             mainAxisSize: MainAxisSize.max,
                             children: [
-                              Text(
-                                FFLocalizations.of(context).getText(
-                                  '1y5w12fr' /* Je persoonlijke agenda met eve... */,
-                                ),
-                                style: FlutterFlowTheme.of(context)
-                                    .bodyMedium
-                                    .override(
-                                      font: GoogleFonts.inter(
-                                        fontWeight: FlutterFlowTheme.of(context)
-                                            .bodyMedium
-                                            .fontWeight,
-                                        fontStyle: FlutterFlowTheme.of(context)
-                                            .bodyMedium
-                                            .fontStyle,
+                              Expanded(
+                                child: Builder(
+                                  builder: (context) {
+                                    final favorietenAgendaItems =
+                                        _model.favorietenAgenda.toList();
+                                    _model.debugGeneratorVariables[
+                                            'favorietenAgendaItems${favorietenAgendaItems.length > 100 ? ' (first 100)' : ''}'] =
+                                        debugSerializeParam(
+                                      favorietenAgendaItems.take(100),
+                                      ParamType.JSON,
+                                      isList: true,
+                                      link:
+                                          'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=favorieten',
+                                      name: 'dynamic',
+                                      nullable: false,
+                                    );
+                                    debugLogWidgetClass(_model);
+
+                                    return MasonryGridView.builder(
+                                      gridDelegate:
+                                          SliverSimpleGridDelegateWithFixedCrossAxisCount(
+                                        crossAxisCount: 2,
                                       ),
-                                      letterSpacing: 0.0,
-                                      fontWeight: FlutterFlowTheme.of(context)
-                                          .bodyMedium
-                                          .fontWeight,
-                                      fontStyle: FlutterFlowTheme.of(context)
-                                          .bodyMedium
-                                          .fontStyle,
-                                    ),
+                                      crossAxisSpacing: 10.0,
+                                      mainAxisSpacing: 10.0,
+                                      itemCount: favorietenAgendaItems.length,
+                                      itemBuilder: (context,
+                                          favorietenAgendaItemsIndex) {
+                                        final favorietenAgendaItemsItem =
+                                            favorietenAgendaItems[
+                                                favorietenAgendaItemsIndex];
+                                        return Builder(builder: (_) {
+                                          return DebugFlutterFlowModelContext(
+                                            rootModel: _model.rootModel,
+                                            parentModelCallback: (m) {
+                                              _model.uitgaantabelKaartModels[
+                                                  'Keyiv6_${favorietenAgendaItemsIndex}_of_${favorietenAgendaItems.length}'] = m;
+                                            },
+                                            child: UitgaantabelKaartWidget(
+                                              key: Key(
+                                                  'Keyiv6_${favorietenAgendaItemsIndex}_of_${favorietenAgendaItems.length}'),
+                                              logo: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].logo''',
+                                              ),
+                                              categorie: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].categorie''',
+                                              ),
+                                              titel: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].titel''',
+                                              ),
+                                              horecagelegenheid: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].horecagelegenheid''',
+                                              ),
+                                              adres: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].adres''',
+                                              ),
+                                              plaats: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].plaats''',
+                                              ),
+                                              datum: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].datum''',
+                                              ),
+                                              inhoud: null,
+                                              nid: getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].nid''',
+                                              ),
+                                              horecagelegenheidNid:
+                                                  getJsonField(
+                                                favorietenAgendaItemsItem,
+                                                r'''$[:].horecagelegenheidNid''',
+                                              ),
+                                            ),
+                                          );
+                                        });
+                                      },
+                                    );
+                                  },
+                                ),
                               ),
                             ],
                           ),

+ 15 - 13
lib/flutter_flow/internationalization.dart

@@ -412,11 +412,6 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Persoonlijke agenda',
       'en': '',
     },
-    '1y5w12fr': {
-      'nl':
-          'Je persoonlijke agenda met evenementen van je favoriete gelegenheden en gemeenten.',
-      'en': '',
-    },
     '9wq117bv': {
       'nl': 'Favoriete gemeenten',
       'en': '',
@@ -457,13 +452,6 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
   },
-  // PUitgaantabelKaartComponent
-  {
-    '4lehigdg': {
-      'nl': ', ',
-      'en': ', ',
-    },
-  },
   // SelectStateDropDownComponent
   {
     'duloakue': {
@@ -531,7 +519,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
     },
     '7pacsyhe': {
       'nl': 'Favorieten',
-      'en': 'Home',
+      'en': 'Favorieten',
     },
     'm8h5x9ts': {
       'nl': '',
@@ -772,6 +760,20 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': ', ',
     },
   },
+  // PUitgaantabelKaartComponentOrgineelMetKaartjeerin
+  {
+    'pvxwv62s': {
+      'nl': ', ',
+      'en': ', ',
+    },
+  },
+  // UitgaantabelKaart
+  {
+    'p3hbyhqm': {
+      'nl': ', ',
+      'en': '',
+    },
+  },
   // Miscellaneous
   {
     '95e9zpp5': {

+ 13 - 42
lib/login/login/login_widget.dart

@@ -532,31 +532,20 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
                                 'https://uitgaanskrant.com/en/flutterdrup/user/login.json',
                               );
                               if (_model.resultDrupalLogin != null) {
-                                FFAppState().userSessionid = getJsonField(
-                                  _model.resultDrupalLogin,
-                                  r'''$.sessid''',
-                                ).toString();
-                                FFAppState().userSessionname = getJsonField(
-                                  _model.resultDrupalLogin,
-                                  r'''$.session_name''',
-                                ).toString();
-                                FFAppState().userToken = getJsonField(
-                                  _model.resultDrupalLogin,
-                                  r'''$.token''',
-                                ).toString();
-                                FFAppState().userName = getJsonField(
-                                  _model.resultDrupalLogin,
-                                  r'''$.user.name''',
-                                ).toString();
-                                FFAppState().userUid = getJsonField(
-                                  _model.resultDrupalLogin,
-                                  r'''$.user.uid''',
+                                ScaffoldMessenger.of(context).showSnackBar(
+                                  SnackBar(
+                                    content: Text(
+                                      'Succesvol ingelogd!',
+                                      style: TextStyle(
+                                        color: FlutterFlowTheme.of(context)
+                                            .primaryText,
+                                      ),
+                                    ),
+                                    duration: Duration(milliseconds: 4000),
+                                    backgroundColor:
+                                        FlutterFlowTheme.of(context).secondary,
+                                  ),
                                 );
-                                FFAppState().userMail = getJsonField(
-                                  _model.resultDrupalLogin,
-                                  r'''$.user.mail''',
-                                ).toString();
-                                safeSetState(() {});
                               } else {
                                 ScaffoldMessenger.of(context).showSnackBar(
                                   SnackBar(
@@ -574,24 +563,6 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
                                 );
                               }
 
-                              await showDialog(
-                                context: context,
-                                builder: (alertDialogContext) {
-                                  return AlertDialog(
-                                    title: Text('melding'),
-                                    content: Text(
-                                        _model.resultDrupalLogin!.toString()),
-                                    actions: [
-                                      TextButton(
-                                        onPressed: () =>
-                                            Navigator.pop(alertDialogContext),
-                                        child: Text('Ok'),
-                                      ),
-                                    ],
-                                  );
-                                },
-                              );
-
                               safeSetState(() {});
                             },
                             text: FFLocalizations.of(context).getText(

+ 104 - 97
lib/shared/drawer_component/drawer_component_widget.dart

@@ -1274,123 +1274,130 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                       ),
                     ),
                   ),
-                  Row(
-                    mainAxisSize: MainAxisSize.max,
-                    children: [
-                      FFButtonWidget(
-                        onPressed: () async {
-                          context.pushNamed(LoginWidget.routeName);
-                        },
-                        text: FFLocalizations.of(context).getText(
-                          '0xszp35t' /* Mijn Account */,
+                  Padding(
+                    padding:
+                        EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 48.0),
+                    child: Row(
+                      mainAxisSize: MainAxisSize.max,
+                      children: [
+                        FFButtonWidget(
+                          onPressed: () async {
+                            context.pushNamed(LoginWidget.routeName);
+                          },
+                          text: FFLocalizations.of(context).getText(
+                            '0xszp35t' /* Mijn Account */,
+                          ),
+                          options: FFButtonOptions(
+                            height: 40.0,
+                            padding: EdgeInsetsDirectional.fromSTEB(
+                                16.0, 0.0, 16.0, 0.0),
+                            iconPadding: EdgeInsetsDirectional.fromSTEB(
+                                0.0, 0.0, 0.0, 0.0),
+                            color: FlutterFlowTheme.of(context).primary,
+                            textStyle: FlutterFlowTheme.of(context)
+                                .titleSmall
+                                .override(
+                                  font: GoogleFonts.interTight(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .titleSmall
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .titleSmall
+                                        .fontStyle,
+                                  ),
+                                  color: Colors.white,
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .titleSmall
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .titleSmall
+                                      .fontStyle,
+                                ),
+                            elevation: 0.0,
+                            borderRadius: BorderRadius.circular(8.0),
+                          ),
                         ),
-                        options: FFButtonOptions(
-                          height: 40.0,
-                          padding: EdgeInsetsDirectional.fromSTEB(
-                              16.0, 0.0, 16.0, 0.0),
-                          iconPadding: EdgeInsetsDirectional.fromSTEB(
-                              0.0, 0.0, 0.0, 0.0),
-                          color: FlutterFlowTheme.of(context).primary,
-                          textStyle:
-                              FlutterFlowTheme.of(context).titleSmall.override(
-                                    font: GoogleFonts.interTight(
+                        AlignedTooltip(
+                          content: Padding(
+                            padding: EdgeInsets.all(4.0),
+                            child: Text(
+                              FFLocalizations.of(context).getText(
+                                'vmbtb6ah' /* Terug */,
+                              ),
+                              style: FlutterFlowTheme.of(context)
+                                  .bodyLarge
+                                  .override(
+                                    font: GoogleFonts.inter(
                                       fontWeight: FlutterFlowTheme.of(context)
-                                          .titleSmall
+                                          .bodyLarge
                                           .fontWeight,
                                       fontStyle: FlutterFlowTheme.of(context)
-                                          .titleSmall
+                                          .bodyLarge
                                           .fontStyle,
                                     ),
-                                    color: Colors.white,
                                     letterSpacing: 0.0,
                                     fontWeight: FlutterFlowTheme.of(context)
-                                        .titleSmall
+                                        .bodyLarge
                                         .fontWeight,
                                     fontStyle: FlutterFlowTheme.of(context)
-                                        .titleSmall
+                                        .bodyLarge
                                         .fontStyle,
                                   ),
-                          elevation: 0.0,
+                            ),
+                          ),
+                          offset: 4.0,
+                          preferredDirection: AxisDirection.down,
                           borderRadius: BorderRadius.circular(8.0),
-                        ),
-                      ),
-                      AlignedTooltip(
-                        content: Padding(
-                          padding: EdgeInsets.all(4.0),
-                          child: Text(
-                            FFLocalizations.of(context).getText(
-                              'vmbtb6ah' /* Terug */,
+                          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).primary,
+                            icon: Icon(
+                              Icons.arrow_back,
+                              color: FlutterFlowTheme.of(context).info,
+                              size: 24.0,
                             ),
-                            style:
-                                FlutterFlowTheme.of(context).bodyLarge.override(
-                                      font: GoogleFonts.inter(
-                                        fontWeight: FlutterFlowTheme.of(context)
-                                            .bodyLarge
-                                            .fontWeight,
-                                        fontStyle: FlutterFlowTheme.of(context)
-                                            .bodyLarge
-                                            .fontStyle,
-                                      ),
-                                      letterSpacing: 0.0,
+                            onPressed: () async {
+                              Navigator.pop(context);
+                            },
+                          ),
+                        ),
+                        Text(
+                          FFLocalizations.of(context).getText(
+                            '7qpu1l01' /* v0001 */,
+                          ),
+                          style:
+                              FlutterFlowTheme.of(context).bodyMedium.override(
+                                    font: GoogleFonts.inter(
                                       fontWeight: FlutterFlowTheme.of(context)
-                                          .bodyLarge
+                                          .bodyMedium
                                           .fontWeight,
                                       fontStyle: FlutterFlowTheme.of(context)
-                                          .bodyLarge
+                                          .bodyMedium
                                           .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).primary,
-                          icon: Icon(
-                            Icons.arrow_back,
-                            color: FlutterFlowTheme.of(context).info,
-                            size: 24.0,
-                          ),
-                          onPressed: () async {
-                            Navigator.pop(context);
-                          },
-                        ),
-                      ),
-                      Text(
-                        FFLocalizations.of(context).getText(
-                          '7qpu1l01' /* v0001 */,
+                                    color: Color(0xFF5B88A9),
+                                    fontSize: 12.0,
+                                    letterSpacing: 0.0,
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyMedium
+                                        .fontStyle,
+                                  ),
                         ),
-                        style: FlutterFlowTheme.of(context).bodyMedium.override(
-                              font: GoogleFonts.inter(
-                                fontWeight: FlutterFlowTheme.of(context)
-                                    .bodyMedium
-                                    .fontWeight,
-                                fontStyle: FlutterFlowTheme.of(context)
-                                    .bodyMedium
-                                    .fontStyle,
-                              ),
-                              color: Color(0xFF5B88A9),
-                              fontSize: 12.0,
-                              letterSpacing: 0.0,
-                              fontWeight: FlutterFlowTheme.of(context)
-                                  .bodyMedium
-                                  .fontWeight,
-                              fontStyle: FlutterFlowTheme.of(context)
-                                  .bodyMedium
-                                  .fontStyle,
-                            ),
-                      ),
-                    ],
+                      ],
+                    ),
                   ),
                 ],
               ),

+ 6 - 10
lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_model.dart

@@ -2,14 +2,10 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
-import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
-import 'dart:ui';
-import '/index.dart';
+import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:async';
 import 'p_uitgaantabel_kaart_component_widget.dart'
     show PUitgaantabelKaartComponentWidget;
-import 'package:auto_size_text/auto_size_text.dart';
-import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
 import 'package:google_fonts/google_fonts.dart';
@@ -25,8 +21,8 @@ class PUitgaantabelKaartComponentModel
   PagingController<ApiPagingParams, dynamic>? listViewPagingController;
   Function(ApiPagingParams nextPageMarker)? listViewApiCall;
 
-  // Models for tagCategorieComponent dynamic component.
-  Map<String, FlutterFlowModel> tagCategorieComponentModels = {};
+  // Models for UitgaantabelKaart dynamic component.
+  Map<String, FlutterFlowModel> uitgaantabelKaartModels = {};
 
   final Map<String, DebugDataField> debugGeneratorVariables = {};
   final Map<String, DebugDataField> debugBackendQueries = {};
@@ -132,12 +128,12 @@ class PUitgaantabelKaartComponentModel
           ),
         }.withoutNulls.entries,
         dynamicComponentStates: {
-          'tagCategorieComponentModels (List<tagCategorieComponent>)':
+          'uitgaantabelKaartModels (List<UitgaantabelKaart>)':
               DynamicWidgetClassDebugData(
             componentStates: Map.fromIterables(
               List.generate(
-                  tagCategorieComponentModels.length, (index) => '[$index]'),
-              tagCategorieComponentModels.values
+                  uitgaantabelKaartModels.length, (index) => '[$index]'),
+              uitgaantabelKaartModels.values
                   .map((e) => e.toWidgetClassDebugData()),
             ).entries,
           ),

+ 51 - 514
lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart

@@ -2,12 +2,8 @@ import '/backend/api_requests/api_calls.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
-import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
-import 'dart:ui';
-import '/index.dart';
+import '/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart';
 import 'dart:async';
-import 'package:auto_size_text/auto_size_text.dart';
-import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
 import 'package:google_fonts/google_fonts.dart';
@@ -103,7 +99,7 @@ class _PUitgaantabelKaartComponentWidgetState
     DebugFlutterFlowModelContext.maybeOf(context)
         ?.parentModelCallback
         ?.call(_model);
-    _model.tagCategorieComponentModels.clear();
+    _model.uitgaantabelKaartModels.clear();
 
     return Padding(
       padding: EdgeInsetsDirectional.fromSTEB(
@@ -168,518 +164,59 @@ class _PUitgaantabelKaartComponentWidgetState
             itemBuilder: (context, _, evenementenIndex) {
               final evenementenItem =
                   _model.listViewPagingController!.itemList![evenementenIndex];
-              return Padding(
-                padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 12.0),
-                child: InkWell(
-                  splashColor: Colors.transparent,
-                  focusColor: Colors.transparent,
-                  hoverColor: Colors.transparent,
-                  highlightColor: Colors.transparent,
-                  onTap: () async {
-                    context.pushNamed(
-                      EventCurrentWidget.routeName,
-                      queryParameters: {
-                        'nid': serializeParam(
-                          getJsonField(
-                            evenementenItem,
-                            r'''$.nid''',
-                          ).toString(),
-                          ParamType.String,
-                        ),
-                        'horecaid': serializeParam(
-                          getJsonField(
-                            evenementenItem,
-                            r'''$.horecagelegenheidid''',
-                          ).toString(),
-                          ParamType.String,
-                        ),
-                      }.withoutNulls,
-                    );
+              return Builder(builder: (_) {
+                return DebugFlutterFlowModelContext(
+                  rootModel: _model.rootModel,
+                  parentModelCallback: (m) {
+                    _model.uitgaantabelKaartModels[
+                        'Keybvr_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'] = m;
                   },
-                  child: Container(
-                    height: () {
-                      if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
-                        return 160.0;
-                      } else if (MediaQuery.sizeOf(context).width <
-                          kBreakpointMedium) {
-                        return 200.0;
-                      } else if (MediaQuery.sizeOf(context).width <
-                          kBreakpointLarge) {
-                        return 240.0;
-                      } else {
-                        return 280.0;
-                      }
-                    }(),
-                    decoration: BoxDecoration(
-                      color: Colors.white,
-                      boxShadow: [
-                        BoxShadow(
-                          blurRadius: 4.0,
-                          color: Color(0x33000000),
-                          offset: Offset(
-                            0.0,
-                            2.0,
-                          ),
-                        )
-                      ],
-                      borderRadius: BorderRadius.only(
-                        topLeft: Radius.circular(12.0),
-                        topRight: Radius.circular(12.0),
-                        bottomLeft: Radius.circular(12.0),
-                        bottomRight: Radius.circular(12.0),
-                      ),
+                  child: UitgaantabelKaartWidget(
+                    key: Key(
+                        'Keybvr_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'),
+                    logo: getJsonField(
+                      evenementenItem,
+                      r'''$.logo''',
                     ),
-                    child: Row(
-                      mainAxisSize: MainAxisSize.max,
-                      children: [
-                        Expanded(
-                          flex: 3,
-                          child: Container(
-                            decoration: BoxDecoration(
-                              color: FlutterFlowTheme.of(context)
-                                  .secondaryBackground,
-                            ),
-                            child: Stack(
-                              children: [
-                                Align(
-                                  alignment: AlignmentDirectional(0.0, 1.0),
-                                  child: Builder(
-                                    builder: (context) {
-                                      if (getJsonField(
-                                            evenementenItem,
-                                            r'''$.logo''',
-                                          ) !=
-                                          null) {
-                                        return ClipRRect(
-                                          borderRadius:
-                                              BorderRadius.circular(8.0),
-                                          child: CachedNetworkImage(
-                                            fadeInDuration:
-                                                Duration(milliseconds: 500),
-                                            fadeOutDuration:
-                                                Duration(milliseconds: 500),
-                                            imageUrl: getJsonField(
-                                              evenementenItem,
-                                              r'''$.logo''',
-                                            ).toString(),
-                                            fit: BoxFit.fitHeight,
-                                          ),
-                                        );
-                                      } else {
-                                        return Icon(
-                                          Icons.image_not_supported,
-                                          color: FlutterFlowTheme.of(context)
-                                              .primaryText,
-                                          size: 24.0,
-                                        );
-                                      }
-                                    },
-                                  ),
-                                ),
-                                Align(
-                                  alignment: AlignmentDirectional(-0.92, 0.76),
-                                  child: Padding(
-                                    padding: EdgeInsetsDirectional.fromSTEB(
-                                        8.0, 4.0, 8.0, 4.0),
-                                    child: Container(
-                                      decoration: BoxDecoration(),
-                                      child: Builder(
-                                        builder: (context) {
-                                          final categorieitem = getJsonField(
-                                            evenementenItem,
-                                            r'''$.categorie''',
-                                          ).toList();
-                                          _model.debugGeneratorVariables[
-                                                  'categorieitem${categorieitem.length > 100 ? ' (first 100)' : ''}'] =
-                                              debugSerializeParam(
-                                            categorieitem.take(100),
-                                            ParamType.JSON,
-                                            isList: true,
-                                            link:
-                                                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaantabelKaartComponent',
-                                            name: 'dynamic',
-                                            nullable: false,
-                                          );
-                                          debugLogWidgetClass(_model);
-
-                                          return Wrap(
-                                            spacing: 0.0,
-                                            runSpacing: 0.0,
-                                            alignment: WrapAlignment.start,
-                                            crossAxisAlignment:
-                                                WrapCrossAlignment.start,
-                                            direction: Axis.horizontal,
-                                            runAlignment: WrapAlignment.start,
-                                            verticalDirection:
-                                                VerticalDirection.down,
-                                            clipBehavior: Clip.none,
-                                            children: List.generate(
-                                                categorieitem.length,
-                                                (categorieitemIndex) {
-                                              final categorieitemItem =
-                                                  categorieitem[
-                                                      categorieitemIndex];
-                                              return Builder(builder: (_) {
-                                                return DebugFlutterFlowModelContext(
-                                                  rootModel: _model.rootModel,
-                                                  parentModelCallback: (m) {
-                                                    _model.tagCategorieComponentModels[
-                                                        'Keypvw_${categorieitemIndex}_of_${categorieitem.length}'] = m;
-                                                  },
-                                                  child:
-                                                      TagCategorieComponentWidget(
-                                                    key: Key(
-                                                        'Keypvw_${categorieitemIndex}_of_${categorieitem.length}'),
-                                                    categorieTag:
-                                                        categorieitemItem
-                                                            .toString(),
-                                                  ),
-                                                );
-                                              });
-                                            }),
-                                          );
-                                        },
-                                      ),
-                                    ),
-                                  ),
-                                ),
-                              ],
-                            ),
-                          ),
-                        ),
-                        Expanded(
-                          flex: 6,
-                          child: Padding(
-                            padding: EdgeInsetsDirectional.fromSTEB(
-                                6.0, 0.0, 0.0, 0.0),
-                            child: ClipRRect(
-                              child: Container(
-                                decoration: BoxDecoration(
-                                  color: FlutterFlowTheme.of(context)
-                                      .secondaryBackground,
-                                ),
-                                child: Align(
-                                  alignment: AlignmentDirectional(-1.0, 0.0),
-                                  child: Column(
-                                    mainAxisSize: MainAxisSize.max,
-                                    mainAxisAlignment: MainAxisAlignment.start,
-                                    crossAxisAlignment:
-                                        CrossAxisAlignment.start,
-                                    children: [
-                                      Padding(
-                                        padding: EdgeInsetsDirectional.fromSTEB(
-                                            0.0, 0.0, 0.0, 5.0),
-                                        child: AutoSizeText(
-                                          getJsonField(
-                                            evenementenItem,
-                                            r'''$.titel''',
-                                          ).toString(),
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodyLarge
-                                              .override(
-                                            font: GoogleFonts.inter(
-                                              fontWeight:
-                                                  FlutterFlowTheme.of(context)
-                                                      .bodyLarge
-                                                      .fontWeight,
-                                              fontStyle:
-                                                  FlutterFlowTheme.of(context)
-                                                      .bodyLarge
-                                                      .fontStyle,
-                                            ),
-                                            letterSpacing: 0.0,
-                                            fontWeight:
-                                                FlutterFlowTheme.of(context)
-                                                    .bodyLarge
-                                                    .fontWeight,
-                                            fontStyle:
-                                                FlutterFlowTheme.of(context)
-                                                    .bodyLarge
-                                                    .fontStyle,
-                                            shadows: [
-                                              Shadow(
-                                                color:
-                                                    FlutterFlowTheme.of(context)
-                                                        .secondaryText,
-                                                offset: Offset(0.0, 0.0),
-                                                blurRadius: 0.0,
-                                              )
-                                            ],
-                                          ),
-                                          overflow: TextOverflow.ellipsis,
-                                        ),
-                                      ),
-                                      Row(
-                                        mainAxisSize: MainAxisSize.max,
-                                        children: [
-                                          Padding(
-                                            padding:
-                                                EdgeInsetsDirectional.fromSTEB(
-                                                    2.0, 0.0, 4.0, 0.0),
-                                            child: Icon(
-                                              Icons.add_business_rounded,
-                                              color:
-                                                  FlutterFlowTheme.of(context)
-                                                      .primaryText,
-                                              size: 20.0,
-                                            ),
-                                          ),
-                                          Flexible(
-                                            child: Text(
-                                              getJsonField(
-                                                evenementenItem,
-                                                r'''$.horecagelegenheid''',
-                                              ).toString(),
-                                              style:
-                                                  FlutterFlowTheme.of(context)
-                                                      .bodySmall
-                                                      .override(
-                                                        font: GoogleFonts.inter(
-                                                          fontWeight:
-                                                              FlutterFlowTheme.of(
-                                                                      context)
-                                                                  .bodySmall
-                                                                  .fontWeight,
-                                                          fontStyle:
-                                                              FlutterFlowTheme.of(
-                                                                      context)
-                                                                  .bodySmall
-                                                                  .fontStyle,
-                                                        ),
-                                                        letterSpacing: 0.0,
-                                                        fontWeight:
-                                                            FlutterFlowTheme.of(
-                                                                    context)
-                                                                .bodySmall
-                                                                .fontWeight,
-                                                        fontStyle:
-                                                            FlutterFlowTheme.of(
-                                                                    context)
-                                                                .bodySmall
-                                                                .fontStyle,
-                                                      ),
-                                            ),
-                                          ),
-                                        ],
-                                      ),
-                                      Row(
-                                        mainAxisSize: MainAxisSize.max,
-                                        children: [
-                                          Padding(
-                                            padding:
-                                                EdgeInsetsDirectional.fromSTEB(
-                                                    2.0, 0.0, 4.0, 0.0),
-                                            child: Icon(
-                                              Icons.location_on_sharp,
-                                              color:
-                                                  FlutterFlowTheme.of(context)
-                                                      .primaryText,
-                                              size: 20.0,
-                                            ),
-                                          ),
-                                          Flexible(
-                                            child: Text(
-                                              getJsonField(
-                                                evenementenItem,
-                                                r'''$.adres''',
-                                              ).toString(),
-                                              style:
-                                                  FlutterFlowTheme.of(context)
-                                                      .bodySmall
-                                                      .override(
-                                                        font: GoogleFonts.inter(
-                                                          fontWeight:
-                                                              FlutterFlowTheme.of(
-                                                                      context)
-                                                                  .bodySmall
-                                                                  .fontWeight,
-                                                          fontStyle:
-                                                              FlutterFlowTheme.of(
-                                                                      context)
-                                                                  .bodySmall
-                                                                  .fontStyle,
-                                                        ),
-                                                        letterSpacing: 0.0,
-                                                        fontWeight:
-                                                            FlutterFlowTheme.of(
-                                                                    context)
-                                                                .bodySmall
-                                                                .fontWeight,
-                                                        fontStyle:
-                                                            FlutterFlowTheme.of(
-                                                                    context)
-                                                                .bodySmall
-                                                                .fontStyle,
-                                                      ),
-                                            ),
-                                          ),
-                                          Text(
-                                            FFLocalizations.of(context).getText(
-                                              '4lehigdg' /* ,  */,
-                                            ),
-                                            style: FlutterFlowTheme.of(context)
-                                                .bodyMedium
-                                                .override(
-                                                  font: GoogleFonts.inter(
-                                                    fontWeight:
-                                                        FlutterFlowTheme.of(
-                                                                context)
-                                                            .bodyMedium
-                                                            .fontWeight,
-                                                    fontStyle:
-                                                        FlutterFlowTheme.of(
-                                                                context)
-                                                            .bodyMedium
-                                                            .fontStyle,
-                                                  ),
-                                                  letterSpacing: 0.0,
-                                                  fontWeight:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .bodyMedium
-                                                          .fontWeight,
-                                                  fontStyle:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .bodyMedium
-                                                          .fontStyle,
-                                                ),
-                                          ),
-                                          Text(
-                                            getJsonField(
-                                              evenementenItem,
-                                              r'''$.plaats''',
-                                            ).toString(),
-                                            style: FlutterFlowTheme.of(context)
-                                                .bodySmall
-                                                .override(
-                                                  font: GoogleFonts.inter(
-                                                    fontWeight:
-                                                        FlutterFlowTheme.of(
-                                                                context)
-                                                            .bodySmall
-                                                            .fontWeight,
-                                                    fontStyle:
-                                                        FlutterFlowTheme.of(
-                                                                context)
-                                                            .bodySmall
-                                                            .fontStyle,
-                                                  ),
-                                                  letterSpacing: 0.0,
-                                                  fontWeight:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .bodySmall
-                                                          .fontWeight,
-                                                  fontStyle:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .bodySmall
-                                                          .fontStyle,
-                                                ),
-                                          ),
-                                        ],
-                                      ),
-                                      Row(
-                                        mainAxisSize: MainAxisSize.max,
-                                        children: [
-                                          Padding(
-                                            padding:
-                                                EdgeInsetsDirectional.fromSTEB(
-                                                    2.0, 0.0, 4.0, 0.0),
-                                            child: Icon(
-                                              Icons.calendar_month,
-                                              color:
-                                                  FlutterFlowTheme.of(context)
-                                                      .primaryText,
-                                              size: 20.0,
-                                            ),
-                                          ),
-                                          Flexible(
-                                            child: Text(
-                                              getJsonField(
-                                                evenementenItem,
-                                                r'''$.datum''',
-                                              ).toString(),
-                                              style:
-                                                  FlutterFlowTheme.of(context)
-                                                      .bodySmall
-                                                      .override(
-                                                        font: GoogleFonts.inter(
-                                                          fontWeight:
-                                                              FlutterFlowTheme.of(
-                                                                      context)
-                                                                  .bodySmall
-                                                                  .fontWeight,
-                                                          fontStyle:
-                                                              FlutterFlowTheme.of(
-                                                                      context)
-                                                                  .bodySmall
-                                                                  .fontStyle,
-                                                        ),
-                                                        letterSpacing: 0.0,
-                                                        fontWeight:
-                                                            FlutterFlowTheme.of(
-                                                                    context)
-                                                                .bodySmall
-                                                                .fontWeight,
-                                                        fontStyle:
-                                                            FlutterFlowTheme.of(
-                                                                    context)
-                                                                .bodySmall
-                                                                .fontStyle,
-                                                      ),
-                                            ),
-                                          ),
-                                        ],
-                                      ),
-                                      Expanded(
-                                        child: Text(
-                                          getJsonField(
-                                            evenementenItem,
-                                            r'''$.inhoud''',
-                                          ).toString(),
-                                          textAlign: TextAlign.start,
-                                          style: FlutterFlowTheme.of(context)
-                                              .bodySmall
-                                              .override(
-                                                font: GoogleFonts.inter(
-                                                  fontWeight:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .bodySmall
-                                                          .fontWeight,
-                                                  fontStyle:
-                                                      FlutterFlowTheme.of(
-                                                              context)
-                                                          .bodySmall
-                                                          .fontStyle,
-                                                ),
-                                                letterSpacing: 0.0,
-                                                fontWeight:
-                                                    FlutterFlowTheme.of(context)
-                                                        .bodySmall
-                                                        .fontWeight,
-                                                fontStyle:
-                                                    FlutterFlowTheme.of(context)
-                                                        .bodySmall
-                                                        .fontStyle,
-                                              ),
-                                          overflow: TextOverflow.ellipsis,
-                                        ),
-                                      ),
-                                    ],
-                                  ),
-                                ),
-                              ),
-                            ),
-                          ),
-                        ),
-                      ],
+                    categorie: getJsonField(
+                      evenementenItem,
+                      r'''$.categorie''',
+                    ),
+                    titel: getJsonField(
+                      evenementenItem,
+                      r'''$.titel''',
+                    ),
+                    horecagelegenheid: getJsonField(
+                      evenementenItem,
+                      r'''$.horecagelegenheid''',
+                    ),
+                    adres: getJsonField(
+                      evenementenItem,
+                      r'''$.adres''',
+                    ),
+                    plaats: getJsonField(
+                      evenementenItem,
+                      r'''$.plaats''',
+                    ),
+                    datum: getJsonField(
+                      evenementenItem,
+                      r'''$.datum''',
+                    ),
+                    inhoud: getJsonField(
+                      evenementenItem,
+                      r'''$.inhoud''',
+                    ),
+                    nid: getJsonField(
+                      evenementenItem,
+                      r'''$.nid''',
+                    ),
+                    horecagelegenheidNid: getJsonField(
+                      evenementenItem,
+                      r'''$.horecagelegenheidid''',
                     ),
                   ),
-                ),
-              );
+                );
+              });
             },
           ),
         ),

+ 152 - 0
lib/uitgaanspaginas/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_model.dart

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

+ 694 - 0
lib/uitgaanspaginas/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin/p_uitgaantabel_kaart_component_orgineel_met_kaartjeerin_widget.dart

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

+ 161 - 0
lib/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_model.dart

@@ -0,0 +1,161 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/index.dart';
+import 'uitgaantabel_kaart_widget.dart' show UitgaantabelKaartWidget;
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class UitgaantabelKaartModel extends FlutterFlowModel<UitgaantabelKaartWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // Models for tagCategorieComponent dynamic component.
+  Map<String, FlutterFlowModel> tagCategorieComponentModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'logo': debugSerializeParam(
+            widget?.logo,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShQKDgoEbG9nbxIGN3Z0NWNwcgIICVAAWgRsb2dv',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'categorie': debugSerializeParam(
+            widget?.categorie,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShkKEwoJY2F0ZWdvcmllEgY1Y3BjanFyAggJUABaCWNhdGVnb3JpZQ==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'titel': debugSerializeParam(
+            widget?.titel,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShUKDwoFdGl0ZWwSBmhpMWlwMXICCAlQAFoFdGl0ZWw=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'horecagelegenheid': debugSerializeParam(
+            widget?.horecagelegenheid,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=SiEKGwoRaG9yZWNhZ2VsZWdlbmhlaWQSBmJndmtmM3ICCAlQAFoRaG9yZWNhZ2VsZWdlbmhlaWQ=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'adres': debugSerializeParam(
+            widget?.adres,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShUKDwoFYWRyZXMSBnZhMHI4OXICCAlQAFoFYWRyZXM=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'plaats': debugSerializeParam(
+            widget?.plaats,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShYKEAoGcGxhYXRzEgZkODVhZW9yAggJUABaBnBsYWF0cw==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'datum': debugSerializeParam(
+            widget?.datum,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShUKDwoFZGF0dW0SBjl2ZTF4M3ICCAlQAFoFZGF0dW0=',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'inhoud': debugSerializeParam(
+            widget?.inhoud,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShYKEAoGaW5ob3VkEgYybXpvZ3FyAggJUABaBmluaG91ZA==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'nid': debugSerializeParam(
+            widget?.nid,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=ShMKDQoDbmlkEgZtajh2NGFyAggJUABaA25pZA==',
+            name: 'dynamic',
+            nullable: true,
+          ),
+          'horecagelegenheidNid': debugSerializeParam(
+            widget?.horecagelegenheidNid,
+            ParamType.JSON,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+            searchReference:
+                'reference=SiQKHgoUaG9yZWNhZ2VsZWdlbmhlaWROaWQSBjU1emQ5eXICCAlQAFoUaG9yZWNhZ2VsZWdlbmhlaWROaWQ=',
+            name: 'dynamic',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'tagCategorieComponentModels (List<tagCategorieComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  tagCategorieComponentModels.length, (index) => '[$index]'),
+              tagCategorieComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=UitgaantabelKaart',
+        searchReference:
+            'reference=OhFVaXRnYWFudGFiZWxLYWFydFAAWhFVaXRnYWFudGFiZWxLYWFydA==',
+        widgetClassName: 'UitgaantabelKaart',
+      );
+}

+ 541 - 0
lib/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart

@@ -0,0 +1,541 @@
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/tag_categorie_component/tag_categorie_component_widget.dart';
+import 'dart:ui';
+import '/index.dart';
+import 'package:auto_size_text/auto_size_text.dart';
+import 'package:cached_network_image/cached_network_image.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'uitgaantabel_kaart_model.dart';
+export 'uitgaantabel_kaart_model.dart';
+
+class UitgaantabelKaartWidget extends StatefulWidget {
+  const UitgaantabelKaartWidget({
+    super.key,
+    this.logo,
+    this.categorie,
+    this.titel,
+    this.horecagelegenheid,
+    this.adres,
+    this.plaats,
+    this.datum,
+    this.inhoud,
+    this.nid,
+    this.horecagelegenheidNid,
+  });
+
+  final dynamic logo;
+  final dynamic categorie;
+  final dynamic titel;
+  final dynamic horecagelegenheid;
+  final dynamic adres;
+  final dynamic plaats;
+  final dynamic datum;
+  final dynamic inhoud;
+  final dynamic nid;
+  final dynamic horecagelegenheidNid;
+
+  @override
+  State<UitgaantabelKaartWidget> createState() =>
+      _UitgaantabelKaartWidgetState();
+}
+
+class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
+    with RouteAware {
+  late UitgaantabelKaartModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => UitgaantabelKaartModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(UitgaantabelKaartWidget oldWidget) {
+    super.didUpdateWidget(oldWidget);
+    _model.widget = widget;
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    final route = DebugModalRoute.of(context);
+    if (route != null) {
+      routeObserver.subscribe(this, route);
+    }
+    debugLogGlobalProperty(context);
+  }
+
+  @override
+  void didPopNext() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPush() {
+    if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
+      setState(() => _model.isRouteVisible = true);
+      debugLogWidgetClass(_model);
+    }
+  }
+
+  @override
+  void didPop() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  void didPushNext() {
+    _model.isRouteVisible = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    DebugFlutterFlowModelContext.maybeOf(context)
+        ?.parentModelCallback
+        ?.call(_model);
+    _model.tagCategorieComponentModels.clear();
+
+    return Padding(
+      padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 12.0),
+      child: InkWell(
+        splashColor: Colors.transparent,
+        focusColor: Colors.transparent,
+        hoverColor: Colors.transparent,
+        highlightColor: Colors.transparent,
+        onTap: () async {
+          context.pushNamed(
+            EventCurrentWidget.routeName,
+            queryParameters: {
+              'nid': serializeParam(
+                widget!.nid?.toString(),
+                ParamType.String,
+              ),
+              'horecaid': serializeParam(
+                widget!.horecagelegenheidNid?.toString(),
+                ParamType.String,
+              ),
+            }.withoutNulls,
+          );
+        },
+        child: Container(
+          height: () {
+            if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
+              return 160.0;
+            } else if (MediaQuery.sizeOf(context).width < kBreakpointMedium) {
+              return 200.0;
+            } else if (MediaQuery.sizeOf(context).width < kBreakpointLarge) {
+              return 240.0;
+            } else {
+              return 280.0;
+            }
+          }(),
+          decoration: BoxDecoration(
+            color: Colors.white,
+            boxShadow: [
+              BoxShadow(
+                blurRadius: 4.0,
+                color: Color(0x33000000),
+                offset: Offset(
+                  0.0,
+                  2.0,
+                ),
+              )
+            ],
+            borderRadius: BorderRadius.only(
+              topLeft: Radius.circular(12.0),
+              topRight: Radius.circular(12.0),
+              bottomLeft: Radius.circular(12.0),
+              bottomRight: Radius.circular(12.0),
+            ),
+          ),
+          child: Row(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Expanded(
+                flex: 3,
+                child: Container(
+                  decoration: BoxDecoration(
+                    color: FlutterFlowTheme.of(context).secondaryBackground,
+                  ),
+                  child: Stack(
+                    children: [
+                      Align(
+                        alignment: AlignmentDirectional(0.0, 1.0),
+                        child: Builder(
+                          builder: (context) {
+                            if (widget!.logo != null) {
+                              return ClipRRect(
+                                borderRadius: BorderRadius.circular(8.0),
+                                child: CachedNetworkImage(
+                                  fadeInDuration: Duration(milliseconds: 500),
+                                  fadeOutDuration: Duration(milliseconds: 500),
+                                  imageUrl: widget!.logo!.toString(),
+                                  fit: BoxFit.fitHeight,
+                                ),
+                              );
+                            } else {
+                              return Icon(
+                                Icons.image_not_supported,
+                                color: FlutterFlowTheme.of(context).primaryText,
+                                size: 24.0,
+                              );
+                            }
+                          },
+                        ),
+                      ),
+                      Align(
+                        alignment: AlignmentDirectional(-0.92, 0.76),
+                        child: Padding(
+                          padding: EdgeInsetsDirectional.fromSTEB(
+                              8.0, 4.0, 8.0, 4.0),
+                          child: Container(
+                            decoration: BoxDecoration(),
+                            child: Builder(
+                              builder: (context) {
+                                final categorieitem =
+                                    widget!.categorie?.toList() ?? [];
+                                _model.debugGeneratorVariables[
+                                        'categorieitem${categorieitem.length > 100 ? ' (first 100)' : ''}'] =
+                                    debugSerializeParam(
+                                  categorieitem.take(100),
+                                  ParamType.JSON,
+                                  isList: true,
+                                  link:
+                                      'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=UitgaantabelKaart',
+                                  name: 'dynamic',
+                                  nullable: false,
+                                );
+                                debugLogWidgetClass(_model);
+
+                                return Wrap(
+                                  spacing: 0.0,
+                                  runSpacing: 0.0,
+                                  alignment: WrapAlignment.start,
+                                  crossAxisAlignment: WrapCrossAlignment.start,
+                                  direction: Axis.horizontal,
+                                  runAlignment: WrapAlignment.start,
+                                  verticalDirection: VerticalDirection.down,
+                                  clipBehavior: Clip.none,
+                                  children: List.generate(categorieitem.length,
+                                      (categorieitemIndex) {
+                                    final categorieitemItem =
+                                        categorieitem[categorieitemIndex];
+                                    return Builder(builder: (_) {
+                                      return DebugFlutterFlowModelContext(
+                                        rootModel: _model.rootModel,
+                                        parentModelCallback: (m) {
+                                          _model.tagCategorieComponentModels[
+                                              'Keynhs_${categorieitemIndex}_of_${categorieitem.length}'] = m;
+                                        },
+                                        child: TagCategorieComponentWidget(
+                                          key: Key(
+                                              'Keynhs_${categorieitemIndex}_of_${categorieitem.length}'),
+                                          categorieTag:
+                                              categorieitemItem.toString(),
+                                        ),
+                                      );
+                                    });
+                                  }),
+                                );
+                              },
+                            ),
+                          ),
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              ),
+              Expanded(
+                flex: 6,
+                child: Padding(
+                  padding: EdgeInsetsDirectional.fromSTEB(6.0, 0.0, 0.0, 0.0),
+                  child: ClipRRect(
+                    child: Container(
+                      decoration: BoxDecoration(
+                        color: FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      child: Align(
+                        alignment: AlignmentDirectional(-1.0, 0.0),
+                        child: Column(
+                          mainAxisSize: MainAxisSize.max,
+                          mainAxisAlignment: MainAxisAlignment.start,
+                          crossAxisAlignment: CrossAxisAlignment.start,
+                          children: [
+                            Padding(
+                              padding: EdgeInsetsDirectional.fromSTEB(
+                                  0.0, 0.0, 0.0, 5.0),
+                              child: AutoSizeText(
+                                widget!.titel!.toString(),
+                                style: FlutterFlowTheme.of(context)
+                                    .bodyLarge
+                                    .override(
+                                  font: GoogleFonts.inter(
+                                    fontWeight: FlutterFlowTheme.of(context)
+                                        .bodyLarge
+                                        .fontWeight,
+                                    fontStyle: FlutterFlowTheme.of(context)
+                                        .bodyLarge
+                                        .fontStyle,
+                                  ),
+                                  letterSpacing: 0.0,
+                                  fontWeight: FlutterFlowTheme.of(context)
+                                      .bodyLarge
+                                      .fontWeight,
+                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .bodyLarge
+                                      .fontStyle,
+                                  shadows: [
+                                    Shadow(
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryText,
+                                      offset: Offset(0.0, 0.0),
+                                      blurRadius: 0.0,
+                                    )
+                                  ],
+                                ),
+                                overflow: TextOverflow.ellipsis,
+                              ),
+                            ),
+                            Row(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      2.0, 0.0, 4.0, 0.0),
+                                  child: Icon(
+                                    Icons.add_business_rounded,
+                                    color: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    size: 20.0,
+                                  ),
+                                ),
+                                Flexible(
+                                  child: Text(
+                                    widget!.horecagelegenheid!.toString(),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontStyle,
+                                          ),
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Row(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      2.0, 0.0, 4.0, 0.0),
+                                  child: Icon(
+                                    Icons.location_on_sharp,
+                                    color: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    size: 20.0,
+                                  ),
+                                ),
+                                Flexible(
+                                  child: Text(
+                                    widget!.adres!.toString(),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontStyle,
+                                          ),
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                  ),
+                                ),
+                                Text(
+                                  FFLocalizations.of(context).getText(
+                                    'p3hbyhqm' /* ,  */,
+                                  ),
+                                  style: FlutterFlowTheme.of(context)
+                                      .bodyMedium
+                                      .override(
+                                        font: GoogleFonts.inter(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodyMedium
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodyMedium
+                                                  .fontStyle,
+                                        ),
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodyMedium
+                                            .fontStyle,
+                                      ),
+                                ),
+                                Text(
+                                  widget!.plaats!.toString(),
+                                  style: FlutterFlowTheme.of(context)
+                                      .bodySmall
+                                      .override(
+                                        font: GoogleFonts.inter(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontStyle,
+                                      ),
+                                ),
+                              ],
+                            ),
+                            Row(
+                              mainAxisSize: MainAxisSize.max,
+                              children: [
+                                Padding(
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      2.0, 0.0, 4.0, 0.0),
+                                  child: Icon(
+                                    Icons.calendar_month,
+                                    color: FlutterFlowTheme.of(context)
+                                        .primaryText,
+                                    size: 20.0,
+                                  ),
+                                ),
+                                Flexible(
+                                  child: Text(
+                                    widget!.datum!.toString(),
+                                    style: FlutterFlowTheme.of(context)
+                                        .bodySmall
+                                        .override(
+                                          font: GoogleFonts.inter(
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .bodySmall
+                                                    .fontStyle,
+                                          ),
+                                          letterSpacing: 0.0,
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .bodySmall
+                                                  .fontStyle,
+                                        ),
+                                  ),
+                                ),
+                              ],
+                            ),
+                            Expanded(
+                              child: Text(
+                                widget!.inhoud!.toString(),
+                                textAlign: TextAlign.start,
+                                style: FlutterFlowTheme.of(context)
+                                    .bodySmall
+                                    .override(
+                                      font: GoogleFonts.inter(
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodySmall
+                                            .fontStyle,
+                                      ),
+                                      letterSpacing: 0.0,
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodySmall
+                                          .fontStyle,
+                                    ),
+                                overflow: TextOverflow.ellipsis,
+                              ),
+                            ),
+                          ],
+                        ),
+                      ),
+                    ),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}