thuis_bezorgen_model.dart 6.1 KB

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