Переглянути джерело

Sync export: pull latest FlutterFlow state

Pulled fresh code export via flutterflow export-code after this
session's builder cleanup (kanweg folder, dode pagina's/componenten,
login-pagina testlink verwijderd).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 1 місяць тому
батько
коміт
48e4cf4101

+ 3 - 0
.gitignore

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

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

@@ -44,8 +44,8 @@
 		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		6436409727A31CD400820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409727A31CD200820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409427A31CD600820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409D27A31CD500820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -225,8 +225,8 @@
 		6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
-				6436409727A31CD400820AF7 /* nl */,
-				6436409727A31CD200820AF7 /* en */,
+				6436409427A31CD600820AF7 /* nl */,
+				6436409D27A31CD500820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 149 - 0
lib/kanweg/z_zuitgaantabel_component/z_zuitgaantabel_component_model.dart

@@ -0,0 +1,149 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/kaart_tabel_uitgaan_comp_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/geen_evenementen_component/geen_evenementen_component_widget.dart';
+import '/index.dart';
+import 'dart:async';
+import 'z_zuitgaantabel_component_widget.dart'
+    show ZZuitgaantabelComponentWidget;
+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 ZZuitgaantabelComponentModel
+    extends FlutterFlowModel<ZZuitgaantabelComponentWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // State field(s) for ListView widget.
+
+  PagingController<ApiPagingParams, dynamic>? listViewPagingController;
+  Function(ApiPagingParams nextPageMarker)? listViewApiCall;
+
+  // Models for kaartTabelUitgaanComp dynamic component.
+  Map<String, FlutterFlowModel> kaartTabelUitgaanCompModels = {};
+
+  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: {
+          'townid': debugSerializeParam(
+            widget?.townid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=ZZuitgaantabelComponent',
+            searchReference:
+                'reference=ShgKEAoGdG93bmlkEgZqM2hvMDVyBAgDIABQAFoGdG93bmlk',
+            name: 'String',
+            nullable: true,
+          ),
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=ZZuitgaantabelComponent',
+            searchReference:
+                'reference=ShsKEwoJZGlzcGxheWlkEgZiaTFxYTlyBAgDIABQAFoJZGlzcGxheWlk',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'kaartTabelUitgaanCompModels (List<kaartTabelUitgaanComp>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  kaartTabelUitgaanCompModels.length, (index) => '[$index]'),
+              kaartTabelUitgaanCompModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=ZZuitgaantabelComponent',
+        searchReference:
+            'reference=OhdaWnVpdGdhYW50YWJlbENvbXBvbmVudFAAWhdaWnVpdGdhYW50YWJlbENvbXBvbmVudA==',
+        widgetClassName: 'ZZuitgaantabelComponent',
+      );
+}

+ 287 - 0
lib/kanweg/z_zuitgaantabel_component/z_zuitgaantabel_component_widget.dart

@@ -0,0 +1,287 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/kaart_tabel_uitgaan_comp_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/geen_evenementen_component/geen_evenementen_component_widget.dart';
+import '/index.dart';
+import 'dart:async';
+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 'z_zuitgaantabel_component_model.dart';
+export 'z_zuitgaantabel_component_model.dart';
+
+class ZZuitgaantabelComponentWidget extends StatefulWidget {
+  const ZZuitgaantabelComponentWidget({
+    super.key,
+    this.townid,
+    this.displayid,
+  });
+
+  final String? townid;
+  final String? displayid;
+
+  @override
+  State<ZZuitgaantabelComponentWidget> createState() =>
+      _ZZuitgaantabelComponentWidgetState();
+}
+
+class _ZZuitgaantabelComponentWidgetState
+    extends State<ZZuitgaantabelComponentWidget> with RouteAware {
+  late ZZuitgaantabelComponentModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => ZZuitgaantabelComponentModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(ZZuitgaantabelComponentWidget 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.kaartTabelUitgaanCompModels.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(
+              townid: widget!.townid,
+              displayId: widget!.displayid,
+              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,
+                ),
+              ),
+            ),
+            noItemsFoundIndicatorBuilder: (_) => Center(
+              child: GeenEvenementenComponentWidget(),
+            ),
+            itemBuilder: (context, _, evenementenIndex) {
+              final evenementenItem =
+                  _model.listViewPagingController!.itemList![evenementenIndex];
+              return Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 0.0, 12.0),
+                child: Container(
+                  decoration: BoxDecoration(
+                    color: Colors.white,
+                    boxShadow: [
+                      BoxShadow(
+                        blurRadius: 4.0,
+                        color: Color(0x33000000),
+                        offset: Offset(
+                          12.0,
+                          12.0,
+                        ),
+                      )
+                    ],
+                    borderRadius: BorderRadius.circular(20.0),
+                    shape: BoxShape.rectangle,
+                  ),
+                  child: Align(
+                    alignment: AlignmentDirectional(1.0, 0.0),
+                    child: Padding(
+                      padding:
+                          EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 24.0),
+                      child: InkWell(
+                        splashColor: Colors.transparent,
+                        focusColor: Colors.transparent,
+                        hoverColor: Colors.transparent,
+                        highlightColor: Colors.transparent,
+                        onTap: () async {
+                          context.pushNamed(
+                            EventCurrentWidget.routeName,
+                            queryParameters: {
+                              'nid': serializeParam(
+                                getJsonField(
+                                  evenementenItem,
+                                  r'''$.nid''',
+                                ).toString(),
+                                ParamType.String,
+                              ),
+                              'horecaid': serializeParam(
+                                getJsonField(
+                                  evenementenItem,
+                                  r'''$.horecagelegenheidid''',
+                                ).toString(),
+                                ParamType.String,
+                              ),
+                            }.withoutNulls,
+                          );
+                        },
+                        child: Stack(
+                          children: [
+                            Builder(builder: (_) {
+                              return DebugFlutterFlowModelContext(
+                                rootModel: _model.rootModel,
+                                parentModelCallback: (m) {
+                                  _model.kaartTabelUitgaanCompModels[
+                                      'Keypxi_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'] = m;
+                                },
+                                child: KaartTabelUitgaanCompWidget(
+                                  key: Key(
+                                      'Keypxi_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'),
+                                  logo: getJsonField(
+                                    evenementenItem,
+                                    r'''$.logo''',
+                                  ).toString(),
+                                  categorie: (getJsonField(
+                                    evenementenItem,
+                                    r'''$.categorie''',
+                                    true,
+                                  ) as List?)
+                                      ?.map<String>((e) => e.toString())
+                                      .toList()
+                                      .cast<String>(),
+                                  titel: getJsonField(
+                                    evenementenItem,
+                                    r'''$.titel''',
+                                  ).toString(),
+                                  datum: getJsonField(
+                                    evenementenItem,
+                                    r'''$.datum''',
+                                  ).toString(),
+                                  horecagelegenheid: getJsonField(
+                                    evenementenItem,
+                                    r'''$.horecagelegenheid''',
+                                  ).toString(),
+                                  adres: getJsonField(
+                                    evenementenItem,
+                                    r'''$.adres''',
+                                  ).toString(),
+                                  plaats: getJsonField(
+                                    evenementenItem,
+                                    r'''$.plaats''',
+                                  ).toString(),
+                                  inhoud: valueOrDefault<String>(
+                                    getJsonField(
+                                      evenementenItem,
+                                      r'''$.inhoud''',
+                                    )?.toString(),
+                                    '\$.inhoud',
+                                  ),
+                                ),
+                              );
+                            }),
+                          ],
+                        ),
+                      ),
+                    ),
+                  ),
+                ),
+              );
+            },
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 149 - 0
lib/kanweg/z_zuitgaantabel_componentsmall/z_zuitgaantabel_componentsmall_model.dart

@@ -0,0 +1,149 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/kaart_tabel_uitgaan_s_comp_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/geen_evenementen_component/geen_evenementen_component_widget.dart';
+import '/index.dart';
+import 'dart:async';
+import 'z_zuitgaantabel_componentsmall_widget.dart'
+    show ZZuitgaantabelComponentsmallWidget;
+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 ZZuitgaantabelComponentsmallModel
+    extends FlutterFlowModel<ZZuitgaantabelComponentsmallWidget> {
+  ///  State fields for stateful widgets in this component.
+
+  // State field(s) for ListView widget.
+
+  PagingController<ApiPagingParams, dynamic>? listViewPagingController;
+  Function(ApiPagingParams nextPageMarker)? listViewApiCall;
+
+  // Models for kaartTabelUitgaanSComp dynamic component.
+  Map<String, FlutterFlowModel> kaartTabelUitgaanSCompModels = {};
+
+  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: {
+          'townid': debugSerializeParam(
+            widget?.townid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=ZZuitgaantabelComponentsmall',
+            searchReference:
+                'reference=ShgKEAoGdG93bmlkEgZqM2hvMDVyBAgDIABQAFoGdG93bmlk',
+            name: 'String',
+            nullable: true,
+          ),
+          'displayid': debugSerializeParam(
+            widget?.displayid,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=ZZuitgaantabelComponentsmall',
+            searchReference:
+                'reference=ShsKEwoJZGlzcGxheWlkEgZiaTFxYTlyBAgDIABQAFoJZGlzcGxheWlk',
+            name: 'String',
+            nullable: true,
+          )
+        }.withoutNulls.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        dynamicComponentStates: {
+          'kaartTabelUitgaanSCompModels (List<kaartTabelUitgaanSComp>)':
+              DynamicWidgetClassDebugData(
+            componentStates: Map.fromIterables(
+              List.generate(
+                  kaartTabelUitgaanSCompModels.length, (index) => '[$index]'),
+              kaartTabelUitgaanSCompModels.values
+                  .map((e) => e.toWidgetClassDebugData()),
+            ).entries,
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=ZZuitgaantabelComponentsmall',
+        searchReference:
+            'reference=OhxaWnVpdGdhYW50YWJlbENvbXBvbmVudHNtYWxsUABaHFpadWl0Z2FhbnRhYmVsQ29tcG9uZW50c21hbGw=',
+        widgetClassName: 'ZZuitgaantabelComponentsmall',
+      );
+}

+ 285 - 0
lib/kanweg/z_zuitgaantabel_componentsmall/z_zuitgaantabel_componentsmall_widget.dart

@@ -0,0 +1,285 @@
+import '/backend/api_requests/api_calls.dart';
+import '/components/kaart_tabel_uitgaan_s_comp_widget.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/shared/geen_evenementen_component/geen_evenementen_component_widget.dart';
+import '/index.dart';
+import 'dart:async';
+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 'z_zuitgaantabel_componentsmall_model.dart';
+export 'z_zuitgaantabel_componentsmall_model.dart';
+
+class ZZuitgaantabelComponentsmallWidget extends StatefulWidget {
+  const ZZuitgaantabelComponentsmallWidget({
+    super.key,
+    this.townid,
+    this.displayid,
+  });
+
+  final String? townid;
+  final String? displayid;
+
+  @override
+  State<ZZuitgaantabelComponentsmallWidget> createState() =>
+      _ZZuitgaantabelComponentsmallWidgetState();
+}
+
+class _ZZuitgaantabelComponentsmallWidgetState
+    extends State<ZZuitgaantabelComponentsmallWidget> with RouteAware {
+  late ZZuitgaantabelComponentsmallModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(context, () => ZZuitgaantabelComponentsmallModel());
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(ZZuitgaantabelComponentsmallWidget 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.kaartTabelUitgaanSCompModels.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(
+              townid: widget!.townid,
+              displayId: widget!.displayid,
+              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,
+                ),
+              ),
+            ),
+            noItemsFoundIndicatorBuilder: (_) => Center(
+              child: GeenEvenementenComponentWidget(),
+            ),
+            itemBuilder: (context, _, evenementenIndex) {
+              final evenementenItem =
+                  _model.listViewPagingController!.itemList![evenementenIndex];
+              return Padding(
+                padding: EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 20.0, 12.0),
+                child: InkWell(
+                  splashColor: Colors.transparent,
+                  focusColor: Colors.transparent,
+                  hoverColor: Colors.transparent,
+                  highlightColor: Colors.transparent,
+                  onTap: () async {
+                    context.pushNamed(
+                      EventCurrentWidget.routeName,
+                      queryParameters: {
+                        'nid': serializeParam(
+                          getJsonField(
+                            evenementenItem,
+                            r'''$.nid''',
+                          ).toString(),
+                          ParamType.String,
+                        ),
+                        'horecaid': serializeParam(
+                          getJsonField(
+                            evenementenItem,
+                            r'''$.horecagelegenheidid''',
+                          ).toString(),
+                          ParamType.String,
+                        ),
+                      }.withoutNulls,
+                    );
+                  },
+                  child: Container(
+                    decoration: BoxDecoration(
+                      boxShadow: [
+                        BoxShadow(
+                          blurRadius: 4.0,
+                          color: Color(0x33000000),
+                          offset: Offset(
+                            12.0,
+                            12.0,
+                          ),
+                        )
+                      ],
+                      gradient: LinearGradient(
+                        colors: [Colors.white, Color(0xFFF4DDDF)],
+                        stops: [0.0, 1.0],
+                        begin: AlignmentDirectional(0.0, -1.0),
+                        end: AlignmentDirectional(0, 1.0),
+                      ),
+                      borderRadius: BorderRadius.circular(20.0),
+                      shape: BoxShape.rectangle,
+                      border: Border.all(
+                        color: Color(0xFFB1061E),
+                        width: 1.0,
+                      ),
+                    ),
+                    child: Builder(builder: (_) {
+                      return DebugFlutterFlowModelContext(
+                        rootModel: _model.rootModel,
+                        parentModelCallback: (m) {
+                          _model.kaartTabelUitgaanSCompModels[
+                              'Keycev_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'] = m;
+                        },
+                        child: KaartTabelUitgaanSCompWidget(
+                          key: Key(
+                              'Keycev_${evenementenIndex}_of_${_model.listViewPagingController!.itemList!.length}'),
+                          titel: getJsonField(
+                            evenementenItem,
+                            r'''$.titel''',
+                          ).toString(),
+                          logo: getJsonField(
+                            evenementenItem,
+                            r'''$.logo''',
+                          ).toString(),
+                          categorie: (getJsonField(
+                            evenementenItem,
+                            r'''$.categorie''',
+                            true,
+                          ) as List?)
+                              ?.map<String>((e) => e.toString())
+                              .toList()
+                              .cast<String>(),
+                          date: getJsonField(
+                            evenementenItem,
+                            r'''$.datum''',
+                          ).toString(),
+                          horecagelegenheid: getJsonField(
+                            evenementenItem,
+                            r'''$.horecagelegenheid''',
+                          ).toString(),
+                          adres: getJsonField(
+                            evenementenItem,
+                            r'''$.adres''',
+                          ).toString(),
+                          plaats: getJsonField(
+                            evenementenItem,
+                            r'''$.plaats''',
+                          ).toString(),
+                          inhoud: valueOrDefault<String>(
+                            getJsonField(
+                              evenementenItem,
+                              r'''$.inhoud''',
+                            )?.toString(),
+                            '\$.inhoud',
+                          ),
+                        ),
+                      );
+                    }),
+                  ),
+                ),
+              );
+            },
+          ),
+        ),
+      ),
+    );
+  }
+}