import '/backend/api_requests/api_calls.dart'; import '/components/header_buttons_component_widget.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart'; import '/shared/drawer_component/drawer_component_widget.dart'; import 'dart:ui'; import 'dart:async'; import 'thuis_bezorgen_widget.dart' show ThuisBezorgenWidget; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; import 'package:provider/provider.dart'; class ThuisBezorgenModel extends FlutterFlowModel { /// State fields for stateful widgets in this page. // State field(s) for StaggeredView widget. PagingController? staggeredViewPagingController; Function(ApiPagingParams nextPageMarker)? staggeredViewApiCall; // Models for HorecagelegenheidoverzichtKaart dynamic component. Map horecagelegenheidoverzichtKaartModels = {}; // Model for HeaderButtonsComponent component. late HeaderButtonsComponentModel headerButtonsComponentModel; // Model for drawerComponent component. late DrawerComponentModel drawerComponentModel; final Map debugGeneratorVariables = {}; final Map debugBackendQueries = {}; final Map widgetBuilderComponents = {}; @override void initState(BuildContext context) { headerButtonsComponentModel = createModel(context, () => HeaderButtonsComponentModel()); drawerComponentModel = createModel(context, () => DrawerComponentModel()); debugLogWidgetClass(this); } @override void dispose() { staggeredViewPagingController?.dispose(); headerButtonsComponentModel.dispose(); drawerComponentModel.dispose(); } /// Additional helper methods. PagingController setStaggeredViewController( Function(ApiPagingParams) apiCall, ) { staggeredViewApiCall = apiCall; return staggeredViewPagingController ??= _createStaggeredViewController(apiCall); } PagingController _createStaggeredViewController( Function(ApiPagingParams) query, ) { final controller = PagingController( firstPageKey: ApiPagingParams( nextPageNumber: 0, numItems: 0, lastResponse: null, ), ); return controller ..addPageRequestListener(staggeredViewHorecagelegenheidoverzichtPage); } void staggeredViewHorecagelegenheidoverzichtPage( ApiPagingParams nextPageMarker) => staggeredViewApiCall!(nextPageMarker) .then((staggeredViewHorecagelegenheidoverzichtResponse) { final pageItems = (getJsonField( staggeredViewHorecagelegenheidoverzichtResponse.jsonBody, r'''$''', ) ?? []) .toList() as List; final newNumItems = nextPageMarker.numItems + pageItems.length; staggeredViewPagingController?.appendPage( pageItems, (pageItems.length > 0) ? ApiPagingParams( nextPageNumber: nextPageMarker.nextPageNumber + 1, numItems: newNumItems, lastResponse: staggeredViewHorecagelegenheidoverzichtResponse, ) : null, ); }); Future waitForOnePageForStaggeredView({ 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 = (staggeredViewPagingController?.nextPageKey?.nextPageNumber ?? 0) > 0; if (timeElapsed > maxWait || (requestComplete && timeElapsed > minWait)) { break; } } } @override WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData( widgetParameters: { 'plaats': debugSerializeParam( widget?.plaats, ParamType.String, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=thuisBezorgen', searchReference: 'reference=ShgKEAoGcGxhYXRzEgY2d2xkOXdyBAgDIAFQAVoGcGxhYXRz', name: 'String', nullable: true, ) }.withoutNulls.entries, generatorVariables: debugGeneratorVariables.entries, backendQueries: debugBackendQueries.entries, componentStates: { 'headerButtonsComponentModel (HeaderButtonsComponent)': headerButtonsComponentModel?.toWidgetClassDebugData(), 'drawerComponentModel (drawerComponent)': drawerComponentModel?.toWidgetClassDebugData(), ...widgetBuilderComponents.map( (key, value) => MapEntry( key, value.toWidgetClassDebugData(), ), ), }.withoutNulls.entries, dynamicComponentStates: { 'horecagelegenheidoverzichtKaartModels (List)': DynamicWidgetClassDebugData( componentStates: Map.fromIterables( List.generate(horecagelegenheidoverzichtKaartModels.length, (index) => '[$index]'), horecagelegenheidoverzichtKaartModels.values .map((e) => e.toWidgetClassDebugData()), ).entries, ), }.withoutNulls.entries, link: 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=thuisBezorgen', searchReference: 'reference=Og10aHVpc0Jlem9yZ2VuUAFaDXRodWlzQmV6b3JnZW4=', widgetClassName: 'thuisBezorgen', ); }