thuis_bezorgen_model.dart 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import '/backend/api_requests/api_calls.dart';
  2. import '/components/header_buttons_component_widget.dart';
  3. import '/flutter_flow/flutter_flow_theme.dart';
  4. import '/flutter_flow/flutter_flow_util.dart';
  5. import '/flutter_flow/flutter_flow_widgets.dart';
  6. import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
  7. import '/shared/drawer_component/drawer_component_widget.dart';
  8. import '/shared/lege_lijst_melding/lege_lijst_melding_widget.dart';
  9. import 'dart:ui';
  10. import 'dart:async';
  11. import 'thuis_bezorgen_widget.dart' show ThuisBezorgenWidget;
  12. import 'package:flutter/material.dart';
  13. import 'package:flutter_spinkit/flutter_spinkit.dart';
  14. import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
  15. import 'package:google_fonts/google_fonts.dart';
  16. import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
  17. import 'package:provider/provider.dart';
  18. class ThuisBezorgenModel extends FlutterFlowModel<ThuisBezorgenWidget> {
  19. /// State fields for stateful widgets in this page.
  20. // State field(s) for StaggeredView widget.
  21. PagingController<ApiPagingParams, dynamic>? staggeredViewPagingController;
  22. Function(ApiPagingParams nextPageMarker)? staggeredViewApiCall;
  23. // Models for HorecagelegenheidoverzichtKaart dynamic component.
  24. Map<String, FlutterFlowModel> horecagelegenheidoverzichtKaartModels = {};
  25. // Model for HeaderButtonsComponent component.
  26. late HeaderButtonsComponentModel headerButtonsComponentModel;
  27. // Model for drawerComponent component.
  28. late DrawerComponentModel drawerComponentModel;
  29. final Map<String, DebugDataField> debugGeneratorVariables = {};
  30. final Map<String, DebugDataField> debugBackendQueries = {};
  31. final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
  32. @override
  33. void initState(BuildContext context) {
  34. headerButtonsComponentModel =
  35. createModel(context, () => HeaderButtonsComponentModel());
  36. drawerComponentModel = createModel(context, () => DrawerComponentModel());
  37. debugLogWidgetClass(this);
  38. }
  39. @override
  40. void dispose() {
  41. staggeredViewPagingController?.dispose();
  42. headerButtonsComponentModel.dispose();
  43. drawerComponentModel.dispose();
  44. }
  45. /// Additional helper methods.
  46. PagingController<ApiPagingParams, dynamic> setStaggeredViewController(
  47. Function(ApiPagingParams) apiCall,
  48. ) {
  49. staggeredViewApiCall = apiCall;
  50. return staggeredViewPagingController ??=
  51. _createStaggeredViewController(apiCall);
  52. }
  53. PagingController<ApiPagingParams, dynamic> _createStaggeredViewController(
  54. Function(ApiPagingParams) query,
  55. ) {
  56. final controller = PagingController<ApiPagingParams, dynamic>(
  57. firstPageKey: ApiPagingParams(
  58. nextPageNumber: 0,
  59. numItems: 0,
  60. lastResponse: null,
  61. ),
  62. );
  63. return controller
  64. ..addPageRequestListener(staggeredViewHorecagelegenheidoverzichtPage);
  65. }
  66. void staggeredViewHorecagelegenheidoverzichtPage(
  67. ApiPagingParams nextPageMarker) =>
  68. staggeredViewApiCall!(nextPageMarker)
  69. .then((staggeredViewHorecagelegenheidoverzichtResponse) {
  70. final pageItems = (getJsonField(
  71. staggeredViewHorecagelegenheidoverzichtResponse.jsonBody,
  72. r'''$''',
  73. ) ??
  74. [])
  75. .toList() as List;
  76. final newNumItems = nextPageMarker.numItems + pageItems.length;
  77. staggeredViewPagingController?.appendPage(
  78. pageItems,
  79. (pageItems.length > 0)
  80. ? ApiPagingParams(
  81. nextPageNumber: nextPageMarker.nextPageNumber + 1,
  82. numItems: newNumItems,
  83. lastResponse: staggeredViewHorecagelegenheidoverzichtResponse,
  84. )
  85. : null,
  86. );
  87. });
  88. Future waitForOnePageForStaggeredView({
  89. double minWait = 0,
  90. double maxWait = double.infinity,
  91. }) async {
  92. final stopwatch = Stopwatch()..start();
  93. while (true) {
  94. await Future.delayed(Duration(milliseconds: 50));
  95. final timeElapsed = stopwatch.elapsedMilliseconds;
  96. final requestComplete =
  97. (staggeredViewPagingController?.nextPageKey?.nextPageNumber ?? 0) > 0;
  98. if (timeElapsed > maxWait || (requestComplete && timeElapsed > minWait)) {
  99. break;
  100. }
  101. }
  102. }
  103. @override
  104. WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
  105. widgetParameters: {
  106. 'plaats': debugSerializeParam(
  107. widget?.plaats,
  108. ParamType.String,
  109. link:
  110. 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=thuisBezorgen',
  111. searchReference:
  112. 'reference=ShgKEAoGcGxhYXRzEgY2d2xkOXdyBAgDIAFQAVoGcGxhYXRz',
  113. name: 'String',
  114. nullable: true,
  115. )
  116. }.withoutNulls.entries,
  117. generatorVariables: debugGeneratorVariables.entries,
  118. backendQueries: debugBackendQueries.entries,
  119. componentStates: {
  120. 'headerButtonsComponentModel (HeaderButtonsComponent)':
  121. headerButtonsComponentModel?.toWidgetClassDebugData(),
  122. 'drawerComponentModel (drawerComponent)':
  123. drawerComponentModel?.toWidgetClassDebugData(),
  124. ...widgetBuilderComponents.map(
  125. (key, value) => MapEntry(
  126. key,
  127. value.toWidgetClassDebugData(),
  128. ),
  129. ),
  130. }.withoutNulls.entries,
  131. dynamicComponentStates: {
  132. 'horecagelegenheidoverzichtKaartModels (List<HorecagelegenheidoverzichtKaart>)':
  133. DynamicWidgetClassDebugData(
  134. componentStates: Map.fromIterables(
  135. List.generate(horecagelegenheidoverzichtKaartModels.length,
  136. (index) => '[$index]'),
  137. horecagelegenheidoverzichtKaartModels.values
  138. .map((e) => e.toWidgetClassDebugData()),
  139. ).entries,
  140. ),
  141. }.withoutNulls.entries,
  142. link:
  143. 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=thuisBezorgen',
  144. searchReference:
  145. 'reference=Og10aHVpc0Jlem9yZ2VuUAFaDXRodWlzQmV6b3JnZW4=',
  146. widgetClassName: 'thuisBezorgen',
  147. );
  148. }