Просмотр исходного кода

Add Delen tooltip to Event share button; sync Home page rebuild (national landing, dedicated slider/table components + API call)

- EventCurrentWidget: wrap share IconButton in AlignedTooltip ("Delen"), same pattern as the header buttons
- Home page: new home_uitgaan_slider_component + home_uitgaantabel_kaart_component, dedicated cityid-less API call, configured as the app's new default landing page (nav.dart) — built directly in the FlutterFlow builder
- PUitgaanPage: switched to a dedicated p_uitgaantabel_kaart_component copy
- p_uitgaan_slider_component: renamed API call reference (HomeSliderCall -> UitgaanSliderCall) to disambiguate from the new Home-specific call

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 1 месяц назад
Родитель
Сommit
efdb74b91f
19 измененных файлов с 2212 добавлено и 97 удалено
  1. 0 3
      .gitignore
  2. 169 6
      lib/backend/api_requests/api_calls.dart
  3. 1 1
      lib/components/header_buttons_component_widget.dart
  4. 7 8
      lib/evenement/slider_uitgaan_component_small_current/slider_uitgaan_component_small_current_widget.dart
  5. 13 2
      lib/flutter_flow/internationalization.dart
  6. 3 3
      lib/flutter_flow/nav/nav.dart
  7. 1 0
      lib/horecagelegenhedenoverzicht/event_current/event_current_model.dart
  8. 56 16
      lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart
  9. 16 16
      lib/uitgaanspaginas/home/home_model.dart
  10. 17 23
      lib/uitgaanspaginas/home/home_widget.dart
  11. 92 0
      lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_model.dart
  12. 292 0
      lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart
  13. 140 0
      lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_model.dart
  14. 616 0
      lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart
  15. 8 8
      lib/uitgaanspaginas/p_uitgaan_page/p_uitgaan_page_model.dart
  16. 3 3
      lib/uitgaanspaginas/p_uitgaan_page/p_uitgaan_page_widget.dart
  17. 8 8
      lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart
  18. 150 0
      lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_model.dart
  19. 620 0
      lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart

+ 0 - 3
.gitignore

@@ -48,6 +48,3 @@ app.*.map.json
 /android/app/debug
 /android/app/profile
 /android/app/release
-
-# Claude Code session state (not app code)
-.claude/

+ 169 - 6
lib/backend/api_requests/api_calls.dart

@@ -169,13 +169,12 @@ class GetcsrfCall {
       ));
 }
 
-class HomeSliderCall {
+class ZZZhomeSliderCall {
   static Future<ApiCallResponse> call({
     String? displayId = 'services_1',
-    String? townid = '1212',
   }) async {
     return ApiManager.instance.makeApiCall(
-      callName: 'homeSlider',
+      callName: 'ZZZhomeSlider',
       apiUrl:
           'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel1.json',
       callType: ApiCallType.GET,
@@ -184,7 +183,6 @@ class HomeSliderCall {
       },
       params: {
         'display_id': displayId,
-        'townid': townid,
       },
       returnBody: true,
       encodeBodyUtf8: false,
@@ -398,12 +396,12 @@ class HomeTabelCall {
       ));
 }
 
-class HomeUitgaanCall {
+class ZZhomeUitgaanCall {
   static Future<ApiCallResponse> call({
     int? page = 0,
   }) async {
     return ApiManager.instance.makeApiCall(
-      callName: 'home uitgaan',
+      callName: 'ZZhome uitgaan',
       apiUrl:
           'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel1.json?display_id=services_3',
       callType: ApiCallType.GET,
@@ -468,6 +466,86 @@ class HomeUitgaanCall {
       ));
 }
 
+class HomeSliderCall {
+  static Future<ApiCallResponse> call({
+    int? page = 0,
+    String? displayId = 'services_1',
+  }) async {
+    return ApiManager.instance.makeApiCall(
+      callName: 'HomeSlider',
+      apiUrl:
+          'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel1.json?display_id=services_1',
+      callType: ApiCallType.GET,
+      headers: {
+        'Authorization': 'Basic Ym9iOnNlcmhpaQ==',
+      },
+      params: {
+        'display_id': displayId,
+      },
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+
+  static String? homeNid(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].nid''',
+      ));
+  static String? homeAdres(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].adres''',
+      ));
+  static String? tabelHorecagelegenheid(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].horecagelegenheid''',
+      ));
+  static String? homeDatum(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].datum''',
+      ));
+  static String? homePlaats(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].plaats''',
+      ));
+  static List<String>? homeCategorie(dynamic response) => (getJsonField(
+        response,
+        r'''$[:].categorie''',
+        true,
+      ) as List?)
+          ?.withoutNulls
+          .map((x) => castToType<String>(x))
+          .withoutNulls
+          .toList();
+  static String? homeTitel(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].titel''',
+      ));
+  static String? homoLogo(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].logo''',
+      ));
+  static String? homeInhoud(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].inhoud''',
+      ));
+  static String? homeUrl(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].url''',
+      ));
+  static String? tabelHorecagelegenheidID(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].horecagelegenheidid''',
+      ));
+}
+
 class UitgaanstabelCall {
   static Future<ApiCallResponse> call({
     int? page = 0,
@@ -553,6 +631,91 @@ class UitgaanstabelCall {
       ));
 }
 
+class UitgaanSliderCall {
+  static Future<ApiCallResponse> call({
+    int? page = 0,
+    String? townid = '0',
+    String? displayId,
+  }) async {
+    displayId ??= '';
+
+    return ApiManager.instance.makeApiCall(
+      callName: 'UitgaanSlider',
+      apiUrl:
+          'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel1.json?display_id=services_3',
+      callType: ApiCallType.GET,
+      headers: {
+        'Authorization': 'Basic Ym9iOnNlcmhpaQ==',
+      },
+      params: {
+        'page': page,
+        'townid': townid,
+        'display_id': displayId,
+      },
+      returnBody: true,
+      encodeBodyUtf8: false,
+      decodeUtf8: false,
+      cache: false,
+      isStreamingApi: false,
+      alwaysAllowBody: false,
+    );
+  }
+
+  static String? homeNid(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].nid''',
+      ));
+  static String? homeAdres(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].adres''',
+      ));
+  static String? tabelHorecagelegenheid(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].horecagelegenheid''',
+      ));
+  static String? homeDatum(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].datum''',
+      ));
+  static String? homePlaats(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].plaats''',
+      ));
+  static List<String>? homeCategorie(dynamic response) => (getJsonField(
+        response,
+        r'''$[:].categorie''',
+        true,
+      ) as List?)
+          ?.withoutNulls
+          .map((x) => castToType<String>(x))
+          .withoutNulls
+          .toList();
+  static String? homeTitel(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].titel''',
+      ));
+  static String? homoLogo(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].logo''',
+      ));
+  static String? homeInhoud(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].inhoud''',
+      ));
+  static String? homeUrl(dynamic response) => castToType<String>(getJsonField(
+        response,
+        r'''$[:].url''',
+      ));
+  static String? tabelHorecagelegenheidID(dynamic response) =>
+      castToType<String>(getJsonField(
+        response,
+        r'''$[:].horecagelegenheidid''',
+      ));
+}
+
 class EstablishmentsNewCall {
   static Future<ApiCallResponse> call({
     int? townid = 28695,

+ 1 - 1
lib/components/header_buttons_component_widget.dart

@@ -149,7 +149,7 @@ class _HeaderButtonsComponentWidgetState
               padding: EdgeInsets.all(4.0),
               child: Text(
                 FFLocalizations.of(context).getText(
-                  'pj545url' /* Terug */,
+                  'vmbtb6ah' /* Terug */,
                 ),
                 style: FlutterFlowTheme.of(context).bodyLarge.override(
                       font: GoogleFonts.inter(

+ 7 - 8
lib/evenement/slider_uitgaan_component_small_current/slider_uitgaan_component_small_current_widget.dart

@@ -105,9 +105,8 @@ class _SliderUitgaanComponentSmallCurrentWidgetState
     return Padding(
       padding: EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0),
       child: FutureBuilder<ApiCallResponse>(
-        future: HomeSliderCall.call(
+        future: ZZZhomeSliderCall.call(
           displayId: widget!.displayid,
-          townid: widget!.townid,
         ),
         builder: (context, snapshot) {
           // Customize what your widget looks like when it's loading.
@@ -123,11 +122,11 @@ class _SliderUitgaanComponentSmallCurrentWidgetState
               ),
             );
           }
-          final carouselHomeSliderResponse = snapshot.data!;
+          final carouselZZZhomeSliderResponse = snapshot.data!;
           _model.debugBackendQueries[
-                  'HomeSliderCall_statusCode_Carousel_dbejz3zl'] =
+                  'ZZZhomeSliderCall_statusCode_Carousel_dbejz3zl'] =
               debugSerializeParam(
-            carouselHomeSliderResponse.statusCode,
+            carouselZZZhomeSliderResponse.statusCode,
             ParamType.int,
             link:
                 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=slider-uitgaanComponent-SmallCurrent',
@@ -135,9 +134,9 @@ class _SliderUitgaanComponentSmallCurrentWidgetState
             nullable: false,
           );
           _model.debugBackendQueries[
-                  'HomeSliderCall_responseBody_Carousel_dbejz3zl'] =
+                  'ZZZhomeSliderCall_responseBody_Carousel_dbejz3zl'] =
               debugSerializeParam(
-            carouselHomeSliderResponse.bodyText,
+            carouselZZZhomeSliderResponse.bodyText,
             ParamType.String,
             link:
                 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=slider-uitgaanComponent-SmallCurrent',
@@ -149,7 +148,7 @@ class _SliderUitgaanComponentSmallCurrentWidgetState
           return Builder(
             builder: (context) {
               final homeslider = getJsonField(
-                carouselHomeSliderResponse.jsonBody,
+                carouselZZZhomeSliderResponse.jsonBody,
                 r'''$''',
               ).toList().take(12).toList();
               _model.debugGeneratorVariables[

+ 13 - 2
lib/flutter_flow/internationalization.dart

@@ -252,6 +252,10 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
   },
   // EventCurrent
   {
+    'pj545url': {
+      'nl': 'Delen',
+      'en': '',
+    },
     '4qrjs6hg': {
       'nl': 'Home',
       'en': '',
@@ -370,7 +374,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
   },
-  // UitgaantabelKaartComponent
+  // PUitgaantabelKaartComponent
   {
     '4lehigdg': {
       'nl': ', ',
@@ -658,11 +662,18 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': 'Menu openen',
       'en': '',
     },
-    'pj545url': {
+    'vmbtb6ah': {
       'nl': 'Terug',
       'en': '',
     },
   },
+  // HomeUitgaantabelKaartComponent
+  {
+    's4nkp0pb': {
+      'nl': ', ',
+      'en': ', ',
+    },
+  },
   // Miscellaneous
   {
     '95e9zpp5': {

+ 3 - 3
lib/flutter_flow/nav/nav.dart

@@ -109,14 +109,14 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
       navigatorKey: appNavigatorKey,
       errorBuilder: (context, state) => appStateNotifier.loggedIn
           ? SelectprovinciegemeenteWidget()
-          : HomeWidget(),
+          : LoginWidget(),
       routes: [
         FFRoute(
           name: '_initialize',
           path: '/',
           builder: (context, _) => appStateNotifier.loggedIn
               ? SelectprovinciegemeenteWidget()
-              : HomeWidget(),
+              : LoginWidget(),
         ),
         FFRoute(
           name: LoginWidget.routeName,
@@ -383,7 +383,7 @@ class FFRoute {
 
           if (requireAuth && !appStateNotifier.loggedIn) {
             appStateNotifier.setRedirectLocationIfUnset(state.uri.toString());
-            return '/home';
+            return '/login';
           }
           return null;
         },

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

@@ -9,6 +9,7 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
 import 'event_current_widget.dart' show EventCurrentWidget;
+import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:carousel_slider/carousel_slider.dart';
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';

+ 56 - 16
lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart

@@ -8,6 +8,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
+import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:carousel_slider/carousel_slider.dart';
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
@@ -336,23 +337,62 @@ class _EventCurrentWidgetState extends State<EventCurrentWidget>
                           ],
                         ),
                       ),
-                      Builder(
-                        builder: (context) => FlutterFlowIconButton(
-                          borderRadius: 8.0,
-                          buttonSize: 40.0,
-                          fillColor: Color(0xFFF265A0),
-                          icon: Icon(
-                            Icons.share,
-                            color: FlutterFlowTheme.of(context).info,
-                            size: 24.0,
+                      AlignedTooltip(
+                        content: Padding(
+                          padding: EdgeInsets.all(4.0),
+                          child: Text(
+                            FFLocalizations.of(context).getText(
+                              'pj545url' /* Delen */,
+                            ),
+                            style:
+                                FlutterFlowTheme.of(context).bodyLarge.override(
+                                      font: GoogleFonts.inter(
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .bodyLarge
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .bodyLarge
+                                            .fontStyle,
+                                      ),
+                                      letterSpacing: 0.0,
+                                      fontWeight: FlutterFlowTheme.of(context)
+                                          .bodyLarge
+                                          .fontWeight,
+                                      fontStyle: FlutterFlowTheme.of(context)
+                                          .bodyLarge
+                                          .fontStyle,
+                                    ),
+                          ),
+                        ),
+                        offset: 4.0,
+                        preferredDirection: AxisDirection.down,
+                        borderRadius: BorderRadius.circular(8.0),
+                        backgroundColor:
+                            FlutterFlowTheme.of(context).secondaryBackground,
+                        elevation: 4.0,
+                        tailBaseWidth: 24.0,
+                        tailLength: 12.0,
+                        waitDuration: Duration(milliseconds: 100),
+                        showDuration: Duration(milliseconds: 1500),
+                        triggerMode: TooltipTriggerMode.tap,
+                        child: Builder(
+                          builder: (context) => FlutterFlowIconButton(
+                            borderRadius: 8.0,
+                            buttonSize: 40.0,
+                            fillColor: Color(0xFFF265A0),
+                            icon: Icon(
+                              Icons.share,
+                              color: FlutterFlowTheme.of(context).info,
+                              size: 24.0,
+                            ),
+                            onPressed: () async {
+                              await Share.share(
+                                'https://uitgk.com/${widget!.nid}',
+                                sharePositionOrigin:
+                                    getWidgetBoundingBox(context),
+                              );
+                            },
                           ),
-                          onPressed: () async {
-                            await Share.share(
-                              'https://uitgk.com/${widget!.nid}',
-                              sharePositionOrigin:
-                                  getWidgetBoundingBox(context),
-                            );
-                          },
                         ),
                       ),
                     ],

+ 16 - 16
lib/uitgaanspaginas/home/home_model.dart

@@ -4,8 +4,8 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
-import '/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart';
-import '/uitgaanspaginas/uitgaantabel_kaart_component/uitgaantabel_kaart_component_widget.dart';
+import '/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart';
+import '/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart';
 import 'dart:ui';
 import 'home_widget.dart' show HomeWidget;
 import 'package:flutter/material.dart';
@@ -16,8 +16,8 @@ import 'package:provider/provider.dart';
 class HomeModel extends FlutterFlowModel<HomeWidget> {
   ///  State fields for stateful widgets in this page.
 
-  // Model for PUitgaanSliderComponent component.
-  late PUitgaanSliderComponentModel pUitgaanSliderComponentModel;
+  // Model for HomeUitgaanSliderComponent component.
+  late HomeUitgaanSliderComponentModel homeUitgaanSliderComponentModel;
   // State field(s) for TabBar widget.
   TabController? tabBarController;
   int get tabBarCurrentIndex =>
@@ -25,8 +25,8 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
   int get tabBarPreviousIndex =>
       tabBarController != null ? tabBarController!.previousIndex : 0;
 
-  // Model for UitgaantabelKaartComponent component.
-  late UitgaantabelKaartComponentModel uitgaantabelKaartComponentModel;
+  // Model for HomeUitgaantabelKaartComponent component.
+  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel;
   // Model for drawerComponent component.
   late DrawerComponentModel drawerComponentModel;
   // Model for HeaderButtonsComponent component.
@@ -37,10 +37,10 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
   final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
   @override
   void initState(BuildContext context) {
-    pUitgaanSliderComponentModel =
-        createModel(context, () => PUitgaanSliderComponentModel());
-    uitgaantabelKaartComponentModel =
-        createModel(context, () => UitgaantabelKaartComponentModel());
+    homeUitgaanSliderComponentModel =
+        createModel(context, () => HomeUitgaanSliderComponentModel());
+    homeUitgaantabelKaartComponentModel =
+        createModel(context, () => HomeUitgaantabelKaartComponentModel());
     drawerComponentModel = createModel(context, () => DrawerComponentModel());
     headerButtonsComponentModel =
         createModel(context, () => HeaderButtonsComponentModel());
@@ -50,9 +50,9 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
 
   @override
   void dispose() {
-    pUitgaanSliderComponentModel.dispose();
+    homeUitgaanSliderComponentModel.dispose();
     tabBarController?.dispose();
-    uitgaantabelKaartComponentModel.dispose();
+    homeUitgaantabelKaartComponentModel.dispose();
     drawerComponentModel.dispose();
     headerButtonsComponentModel.dispose();
   }
@@ -80,10 +80,10 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {
-          'pUitgaanSliderComponentModel (PUitgaanSliderComponent)':
-              pUitgaanSliderComponentModel?.toWidgetClassDebugData(),
-          'uitgaantabelKaartComponentModel (UitgaantabelKaartComponent)':
-              uitgaantabelKaartComponentModel?.toWidgetClassDebugData(),
+          'homeUitgaanSliderComponentModel (HomeUitgaanSliderComponent)':
+              homeUitgaanSliderComponentModel?.toWidgetClassDebugData(),
+          'homeUitgaantabelKaartComponentModel (HomeUitgaantabelKaartComponent)':
+              homeUitgaantabelKaartComponentModel?.toWidgetClassDebugData(),
           'drawerComponentModel (drawerComponent)':
               drawerComponentModel?.toWidgetClassDebugData(),
           'headerButtonsComponentModel (HeaderButtonsComponent)':

+ 17 - 23
lib/uitgaanspaginas/home/home_widget.dart

@@ -4,8 +4,8 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
-import '/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart';
-import '/uitgaanspaginas/uitgaantabel_kaart_component/uitgaantabel_kaart_component_widget.dart';
+import '/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart';
+import '/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart';
 import 'dart:ui';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -102,7 +102,6 @@ class _HomeWidgetState extends State<HomeWidget>
     DebugFlutterFlowModelContext.maybeOf(context)
         ?.parentModelCallback
         ?.call(_model);
-    context.watch<FFAppState>();
 
     return GestureDetector(
       onTap: () {
@@ -212,13 +211,13 @@ class _HomeWidgetState extends State<HomeWidget>
                     ),
                   ),
                   child: wrapWithModel(
-                    model: _model.pUitgaanSliderComponentModel,
+                    model: _model.homeUitgaanSliderComponentModel,
                     updateCallback: () => safeSetState(() {}),
                     child: Builder(builder: (_) {
                       return DebugFlutterFlowModelContext(
                         rootModel: _model.rootModel,
-                        child: PUitgaanSliderComponentWidget(
-                          displayid: 'services_1',
+                        child: HomeUitgaanSliderComponentWidget(
+                          displayid: 'display_1',
                         ),
                       );
                     }),
@@ -317,23 +316,18 @@ class _HomeWidgetState extends State<HomeWidget>
                           Column(
                             mainAxisSize: MainAxisSize.max,
                             children: [
-                              Expanded(
-                                child: wrapWithModel(
-                                  model: _model.uitgaantabelKaartComponentModel,
-                                  updateCallback: () => safeSetState(() {}),
-                                  child: Builder(builder: (_) {
-                                    return DebugFlutterFlowModelContext(
-                                      rootModel: _model.rootModel,
-                                      child: UitgaantabelKaartComponentWidget(
-                                        towndid: FFAppState().gemeenteSelectId,
-                                        displayid: valueOrDefault<String>(
-                                          '',
-                                          'services_3',
-                                        ),
-                                      ),
-                                    );
-                                  }),
-                                ),
+                              wrapWithModel(
+                                model:
+                                    _model.homeUitgaantabelKaartComponentModel,
+                                updateCallback: () => safeSetState(() {}),
+                                child: Builder(builder: (_) {
+                                  return DebugFlutterFlowModelContext(
+                                    rootModel: _model.rootModel,
+                                    child: HomeUitgaantabelKaartComponentWidget(
+                                      displayid: 'display_1',
+                                    ),
+                                  );
+                                }),
                               ),
                             ],
                           ),

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

@@ -0,0 +1,92 @@
+import '/backend/api_requests/api_calls.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart';
+import '/index.dart';
+import 'home_uitgaan_slider_component_widget.dart'
+    show HomeUitgaanSliderComponentWidget;
+import 'package:carousel_slider/carousel_slider.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class HomeUitgaanSliderComponentModel
+    extends FlutterFlowModel<HomeUitgaanSliderComponentWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // State field(s) for Carousel widget.
+  CarouselSliderController? carouselController;
+  int _carouselCurrentIndex = 1;
+  set carouselCurrentIndex(int value) {
+    _carouselCurrentIndex = value;
+    debugLogWidgetClass(this);
+  }
+
+  int get carouselCurrentIndex => _carouselCurrentIndex;
+
+  // Models for PUitgaanSliderKaartComponent dynamic component.
+  Map<String, FlutterFlowModel> pUitgaanSliderKaartComponentModels = {};
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        widgetParameters: {
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponent',
+            searchReference:
+                'reference=ShsKEwoJZGlzcGxheWlkEgZ3ZWF3cmhyBAgDIABQAFoJZGlzcGxheWlk',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        widgetStates: {
+          'carouselCurrentIndex': debugSerializeParam(
+            carouselCurrentIndex,
+            ParamType.int,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaanSliderComponent',
+            name: 'int',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'pUitgaanSliderKaartComponentModels (List<PUitgaanSliderKaartComponent>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(pUitgaanSliderKaartComponentModels.length,
+                  (index) => '[$index]'),
+              pUitgaanSliderKaartComponentModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=HomeUitgaanSliderComponent',
+        searchReference:
+            'reference=OhpIb21lVWl0Z2FhblNsaWRlckNvbXBvbmVudFAAWhpIb21lVWl0Z2FhblNsaWRlckNvbXBvbmVudA==',
+        widgetClassName: 'HomeUitgaanSliderComponent',
+      );
+}

+ 292 - 0
lib/uitgaanspaginas/home_uitgaan_slider_component/home_uitgaan_slider_component_widget.dart

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

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

@@ -0,0 +1,140 @@
+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 'dart:async';
+import 'home_uitgaantabel_kaart_component_widget.dart'
+    show HomeUitgaantabelKaartComponentWidget;
+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 HomeUitgaantabelKaartComponentModel
+    extends FlutterFlowModel<HomeUitgaantabelKaartComponentWidget> {
+  ///  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(listViewHomeTabelPage);
+  }
+
+  void listViewHomeTabelPage(ApiPagingParams nextPageMarker) =>
+      listViewApiCall!(nextPageMarker).then((listViewHomeTabelResponse) {
+        final pageItems = (getJsonField(
+                  listViewHomeTabelResponse.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: listViewHomeTabelResponse,
+                )
+              : 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: {
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaantabelKaartComponent',
+            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=HomeUitgaantabelKaartComponent',
+        searchReference:
+            'reference=Oh5Ib21lVWl0Z2FhbnRhYmVsS2FhcnRDb21wb25lbnRQAFoeSG9tZVVpdGdhYW50YWJlbEthYXJ0Q29tcG9uZW50',
+        widgetClassName: 'HomeUitgaantabelKaartComponent',
+      );
+}

+ 616 - 0
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart

@@ -0,0 +1,616 @@
+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 '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 'home_uitgaantabel_kaart_component_model.dart';
+export 'home_uitgaantabel_kaart_component_model.dart';
+
+class HomeUitgaantabelKaartComponentWidget extends StatefulWidget {
+  const HomeUitgaantabelKaartComponentWidget({
+    super.key,
+    required this.displayid,
+  });
+
+  final String? displayid;
+
+  @override
+  State<HomeUitgaantabelKaartComponentWidget> createState() =>
+      _HomeUitgaantabelKaartComponentWidgetState();
+}
+
+class _HomeUitgaantabelKaartComponentWidgetState
+    extends State<HomeUitgaantabelKaartComponentWidget> with RouteAware {
+  late HomeUitgaantabelKaartComponentModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => HomeUitgaantabelKaartComponentModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(HomeUitgaantabelKaartComponentWidget 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) => HomeTabelCall.call(
+              page: nextPageMarker.nextPageNumber,
+            ),
+          ),
+          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: 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: 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,
+                                  ),
+                                ),
+                              ),
+                              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=HomeUitgaantabelKaartComponent',
+                                          name: 'dynamic',
+                                          nullable: false,
+                                        );
+                                        debugLogWidgetClass(_model);
+
+                                        return Row(
+                                          mainAxisSize: MainAxisSize.max,
+                                          children: List.generate(
+                                              categorieitem.length,
+                                              (categorieitemIndex) {
+                                            final categorieitemItem =
+                                                categorieitem[
+                                                    categorieitemIndex];
+                                            return Builder(builder: (_) {
+                                              return DebugFlutterFlowModelContext(
+                                                rootModel: _model.rootModel,
+                                                parentModelCallback: (m) {
+                                                  _model.tagCategorieComponentModels[
+                                                      'Keyorv_${categorieitemIndex}_of_${categorieitem.length}'] = m;
+                                                },
+                                                child:
+                                                    TagCategorieComponentWidget(
+                                                  key: Key(
+                                                      'Keyorv_${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(
+                                            's4nkp0pb' /* ,  */,
+                                          ),
+                                          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,
+                                      ),
+                                    ),
+                                  ],
+                                ),
+                              ),
+                            ),
+                          ),
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              );
+            },
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 8 - 8
lib/uitgaanspaginas/p_uitgaan_page/p_uitgaan_page_model.dart

@@ -5,7 +5,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import '/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart';
-import '/uitgaanspaginas/uitgaantabel_kaart_component/uitgaantabel_kaart_component_widget.dart';
+import '/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart';
 import 'dart:ui';
 import 'p_uitgaan_page_widget.dart' show PUitgaanPageWidget;
 import 'package:flutter/material.dart';
@@ -22,8 +22,8 @@ class PUitgaanPageModel extends FlutterFlowModel<PUitgaanPageWidget> {
   late HeaderButtonsComponentModel headerButtonsComponentModel;
   // Model for PUitgaanSliderComponent component.
   late PUitgaanSliderComponentModel pUitgaanSliderComponentModel;
-  // Model for UitgaantabelKaartComponent component.
-  late UitgaantabelKaartComponentModel uitgaantabelKaartComponentModel;
+  // Model for PUitgaantabelKaartComponent component.
+  late PUitgaantabelKaartComponentModel pUitgaantabelKaartComponentModel;
 
   final Map<String, DebugDataField> debugGeneratorVariables = {};
   final Map<String, DebugDataField> debugBackendQueries = {};
@@ -35,8 +35,8 @@ class PUitgaanPageModel extends FlutterFlowModel<PUitgaanPageWidget> {
         createModel(context, () => HeaderButtonsComponentModel());
     pUitgaanSliderComponentModel =
         createModel(context, () => PUitgaanSliderComponentModel());
-    uitgaantabelKaartComponentModel =
-        createModel(context, () => UitgaantabelKaartComponentModel());
+    pUitgaantabelKaartComponentModel =
+        createModel(context, () => PUitgaantabelKaartComponentModel());
 
     debugLogWidgetClass(this);
   }
@@ -46,7 +46,7 @@ class PUitgaanPageModel extends FlutterFlowModel<PUitgaanPageWidget> {
     drawerComponentModel.dispose();
     headerButtonsComponentModel.dispose();
     pUitgaanSliderComponentModel.dispose();
-    uitgaantabelKaartComponentModel.dispose();
+    pUitgaantabelKaartComponentModel.dispose();
   }
 
   @override
@@ -82,8 +82,8 @@ class PUitgaanPageModel extends FlutterFlowModel<PUitgaanPageWidget> {
               headerButtonsComponentModel?.toWidgetClassDebugData(),
           'pUitgaanSliderComponentModel (PUitgaanSliderComponent)':
               pUitgaanSliderComponentModel?.toWidgetClassDebugData(),
-          'uitgaantabelKaartComponentModel (UitgaantabelKaartComponent)':
-              uitgaantabelKaartComponentModel?.toWidgetClassDebugData(),
+          'pUitgaantabelKaartComponentModel (PUitgaantabelKaartComponent)':
+              pUitgaantabelKaartComponentModel?.toWidgetClassDebugData(),
           ...widgetBuilderComponents.map(
             (key, value) => MapEntry(
               key,

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

@@ -5,7 +5,7 @@ import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import '/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart';
-import '/uitgaanspaginas/uitgaantabel_kaart_component/uitgaantabel_kaart_component_widget.dart';
+import '/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart';
 import 'dart:ui';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -208,12 +208,12 @@ class _PUitgaanPageWidgetState extends State<PUitgaanPageWidget>
               Container(
                 decoration: BoxDecoration(),
                 child: wrapWithModel(
-                  model: _model.uitgaantabelKaartComponentModel,
+                  model: _model.pUitgaantabelKaartComponentModel,
                   updateCallback: () => safeSetState(() {}),
                   child: Builder(builder: (_) {
                     return DebugFlutterFlowModelContext(
                       rootModel: _model.rootModel,
-                      child: UitgaantabelKaartComponentWidget(
+                      child: PUitgaantabelKaartComponentWidget(
                         towndid: widget!.plaats!,
                         displayid: widget!.services!,
                       ),

+ 8 - 8
lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart

@@ -112,9 +112,9 @@ class _PUitgaanSliderComponentWidgetState
         child: Padding(
           padding: EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0),
           child: FutureBuilder<ApiCallResponse>(
-            future: HomeSliderCall.call(
-              displayId: widget!.displayid,
+            future: UitgaanSliderCall.call(
               townid: widget!.townid,
+              displayId: widget!.displayid,
             ),
             builder: (context, snapshot) {
               // Customize what your widget looks like when it's loading.
@@ -130,11 +130,11 @@ class _PUitgaanSliderComponentWidgetState
                   ),
                 );
               }
-              final carouselHomeSliderResponse = snapshot.data!;
+              final carouselUitgaanSliderResponse = snapshot.data!;
               _model.debugBackendQueries[
-                      'HomeSliderCall_statusCode_Carousel_x013p35w'] =
+                      'UitgaanSliderCall_statusCode_Carousel_x013p35w'] =
                   debugSerializeParam(
-                carouselHomeSliderResponse.statusCode,
+                carouselUitgaanSliderResponse.statusCode,
                 ParamType.int,
                 link:
                     'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaanSliderComponent',
@@ -142,9 +142,9 @@ class _PUitgaanSliderComponentWidgetState
                 nullable: false,
               );
               _model.debugBackendQueries[
-                      'HomeSliderCall_responseBody_Carousel_x013p35w'] =
+                      'UitgaanSliderCall_responseBody_Carousel_x013p35w'] =
                   debugSerializeParam(
-                carouselHomeSliderResponse.bodyText,
+                carouselUitgaanSliderResponse.bodyText,
                 ParamType.String,
                 link:
                     'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaanSliderComponent',
@@ -156,7 +156,7 @@ class _PUitgaanSliderComponentWidgetState
               return Builder(
                 builder: (context) {
                   final homeslider = getJsonField(
-                    carouselHomeSliderResponse.jsonBody,
+                    carouselUitgaanSliderResponse.jsonBody,
                     r'''$''',
                   ).toList().take(12).toList();
                   _model.debugGeneratorVariables[

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

@@ -0,0 +1,150 @@
+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 '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';
+import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
+import 'package:provider/provider.dart';
+
+class PUitgaantabelKaartComponentModel
+    extends FlutterFlowModel<PUitgaantabelKaartComponentWidget> {
+  ///  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=PUitgaantabelKaartComponent',
+            searchReference:
+                'reference=ShkKEQoHdG93bmRpZBIGdjk5ZHVwcgQIAyABUABaB3Rvd25kaWQ=',
+            name: 'String',
+            nullable: true,
+          ),
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=PUitgaantabelKaartComponent',
+            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=PUitgaantabelKaartComponent',
+        searchReference:
+            'reference=OhtQVWl0Z2FhbnRhYmVsS2FhcnRDb21wb25lbnRQAFobUFVpdGdhYW50YWJlbEthYXJ0Q29tcG9uZW50',
+        widgetClassName: 'PUitgaantabelKaartComponent',
+      );
+}

+ 620 - 0
lib/uitgaanspaginas/p_uitgaantabel_kaart_component/p_uitgaantabel_kaart_component_widget.dart

@@ -0,0 +1,620 @@
+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 '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_model.dart';
+export 'p_uitgaantabel_kaart_component_model.dart';
+
+class PUitgaantabelKaartComponentWidget extends StatefulWidget {
+  const PUitgaantabelKaartComponentWidget({
+    super.key,
+    required this.towndid,
+    required this.displayid,
+  });
+
+  final String? towndid;
+  final String? displayid;
+
+  @override
+  State<PUitgaantabelKaartComponentWidget> createState() =>
+      _PUitgaantabelKaartComponentWidgetState();
+}
+
+class _PUitgaantabelKaartComponentWidgetState
+    extends State<PUitgaantabelKaartComponentWidget> with RouteAware {
+  late PUitgaantabelKaartComponentModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => PUitgaantabelKaartComponentModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(PUitgaantabelKaartComponentWidget 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: 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: 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,
+                                  ),
+                                ),
+                              ),
+                              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 Row(
+                                          mainAxisSize: MainAxisSize.max,
+                                          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,
+                                      ),
+                                    ),
+                                  ],
+                                ),
+                              ),
+                            ),
+                          ),
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+              );
+            },
+          ),
+        ),
+      ),
+    );
+  }
+}