Browse Source

P2-1 af: custom action herlaadLijsten laat de filterwissel de lijst herladen

Een Value Key op de component-instantie reset de pagingController niet (het
componentmodel is pagina-eigendom via wrapWithModel met
disposeOnWidgetDisposal = false), en er is geen builder-actie die
pagingController.refresh() genereert. Nieuwe custom action herlaadLijsten
wacht op de rebuild die de nieuwe datumVan/datumTot doorgeeft, loopt daarna
de element-tree af en roept refresh() aan op elke gemonteerde
PagedMasonryGridView. Gekoppeld als tweede actie op de ChoiceChips.

Op de telefoon-emulator (profile-build) getest: Alles -> Dit weekend geeft
meteen zaterdag 19 sep, Vandaag geeft dinsdag 15 sep, en een al geladen tab
(Activiteiten) ververst ook in plaats. De slider blijft staan, geen
paginaherlaad. Activiteiten/Vandaag is terecht leeg: services_4 geeft
vandaag 0 items, services_3 geeft er 9. dart analyze lib/: 0 errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 1 hour ago
parent
commit
4de72ebb54

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

@@ -49,8 +49,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>"; };
-		6436409E27A31CDC00820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409C27A31CDF00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409E27A31CD500820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409727A31CD900820AF7 /* 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>"; };
 		A9C17DEFA21738E5FBD7F54A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
 		B8285832C7E7A3262A5A897C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -317,8 +317,8 @@
 		6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
-				6436409E27A31CDC00820AF7 /* nl */,
-				6436409C27A31CDF00820AF7 /* en */,
+				6436409E27A31CD500820AF7 /* nl */,
+				6436409727A31CD900820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 30 - 0
lib/custom_code/actions/herlaad_lijsten.dart

@@ -0,0 +1,30 @@
+// Automatic FlutterFlow imports
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import 'index.dart'; // Imports other custom actions
+import '/flutter_flow/custom_functions.dart'; // Imports custom functions
+import 'package:flutter/material.dart';
+// Begin custom action code
+// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
+
+// Set your action name, define your arguments and return parameter,
+// and then add the boilerplate code using the `</>` button on the right!
+//
+import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
+
+Future herlaadLijsten() async {
+  await WidgetsBinding.instance.endOfFrame;
+  await Future.delayed(const Duration(milliseconds: 50));
+  final controllers = <dynamic>[];
+  final tegaan = <Element>[];
+  final root = WidgetsBinding.instance.rootElement;
+  if (root != null) tegaan.add(root);
+  while (tegaan.isNotEmpty) {
+    final element = tegaan.removeLast();
+    final w = element.widget;
+    if (w is PagedMasonryGridView) controllers.add(w.pagingController);
+    element.visitChildren(tegaan.add);
+  }
+  for (final controller in controllers) controller.refresh();
+}

+ 1 - 0
lib/custom_code/actions/index.dart

@@ -6,3 +6,4 @@ export 'stadsactiviteit_create.dart' show stadsactiviteitCreate;
 export 'fetch_alle_horecagelegenheden.dart' show fetchAlleHorecagelegenheden;
 export 'evenement_create.dart' show evenementCreate;
 export 'check_verbinding.dart' show checkVerbinding;
+export 'herlaad_lijsten.dart' show herlaadLijsten;

+ 1 - 0
lib/uitgaanspaginas/home/home_model.dart

@@ -8,6 +8,7 @@ import '/shared/drawer_component/drawer_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 '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import 'home_widget.dart' show HomeWidget;
 import 'package:flutter/material.dart';

+ 2 - 0
lib/uitgaanspaginas/home/home_widget.dart

@@ -8,6 +8,7 @@ import '/shared/drawer_component/drawer_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 '/custom_code/actions/index.dart' as actions;
 import '/flutter_flow/custom_functions.dart' as functions;
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -204,6 +205,7 @@ class _HomeWidgetState extends State<HomeWidget>
                       () => _model.choiceChipsValue = val?.firstOrNull);
                   FFAppState().datumFilter = _model.choiceChipsValue!;
                   safeSetState(() {});
+                  await actions.herlaadLijsten();
                 },
                 selectedChipStyle: ChipStyle(
                   backgroundColor: FlutterFlowTheme.of(context).primary,