فهرست منبع

P1-7 Restpunt A+B: horeca-hartjes Drupal-sync (kaart+detail) + Wachtwoord-wijzigen-link op Gebruiker-tab

Beide horeca-hartje-widgets (HorecagelegenheidoverzichtKaart,
HorecagelegenheidCurrent) syncen add/remove nu ook naar het bestaande
favorieten-Services-endpoint (flag/unflag), zelfde patroon als het
gemeente-hartje. Nieuwe custom function favorietenBodyNode(nid) bouwt
de JSON-body (geen concatenatie-optie in het Custom-Action-argumenten-
paneel zelf). Favorieten Gebruiker-tab kreeg een "Wachtwoord wijzigen"-
ListTile die naar de bestaande wachtwoordVergeten-pagina navigeert.

Verse export + flutter analyze (0 errors) + live ff-run-fvm.sh build/
launch op emulator-5554 (geen exceptions).

Bevat ook Bob's gelijktijdige P2-7-exploratie (select_state_drop_down_
component_copy varianten), onderdeel van dezelfde export.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 3 هفته پیش
والد
کامیت
b525b7a631

+ 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>"; };
-		6436409727A31CD900820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409027A31CD900820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409827A31CD000820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409A27A31CDA00820AF7 /* 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 = (
-				6436409727A31CD900820AF7 /* nl */,
-				6436409027A31CD900820AF7 /* en */,
+				6436409827A31CD000820AF7 /* nl */,
+				6436409A27A31CDA00820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 58 - 0
lib/favorieten/favorieten_widget.dart

@@ -798,6 +798,64 @@ class _FavorietenWidgetState extends State<FavorietenWidget>
                                   ),
                                 ),
                               ),
+                              InkWell(
+                                splashColor: Colors.transparent,
+                                focusColor: Colors.transparent,
+                                hoverColor: Colors.transparent,
+                                highlightColor: Colors.transparent,
+                                onTap: () async {
+                                  context.pushNamed(
+                                      WachtwoordVergetenWidget.routeName);
+                                },
+                                child: Material(
+                                  color: Colors.transparent,
+                                  child: ListTile(
+                                    title: Text(
+                                      FFLocalizations.of(context).getText(
+                                        'ogz7q3xk' /* Wachtwoord wijzigen */,
+                                      ),
+                                      style: FlutterFlowTheme.of(context)
+                                          .titleLarge
+                                          .override(
+                                            font: GoogleFonts.interTight(
+                                              fontWeight:
+                                                  FlutterFlowTheme.of(context)
+                                                      .titleLarge
+                                                      .fontWeight,
+                                              fontStyle:
+                                                  FlutterFlowTheme.of(context)
+                                                      .titleLarge
+                                                      .fontStyle,
+                                            ),
+                                            letterSpacing: 0.0,
+                                            fontWeight:
+                                                FlutterFlowTheme.of(context)
+                                                    .titleLarge
+                                                    .fontWeight,
+                                            fontStyle:
+                                                FlutterFlowTheme.of(context)
+                                                    .titleLarge
+                                                    .fontStyle,
+                                          ),
+                                    ),
+                                    trailing: Icon(
+                                      Icons.arrow_forward_ios_rounded,
+                                      color: FlutterFlowTheme.of(context)
+                                          .secondaryText,
+                                      size: 24.0,
+                                    ),
+                                    tileColor: FlutterFlowTheme.of(context)
+                                        .secondaryBackground,
+                                    dense: false,
+                                    contentPadding:
+                                        EdgeInsetsDirectional.fromSTEB(
+                                            12.0, 0.0, 12.0, 0.0),
+                                    shape: RoundedRectangleBorder(
+                                      borderRadius: BorderRadius.circular(8.0),
+                                    ),
+                                  ),
+                                ),
+                              ),
                               InkWell(
                                 splashColor: Colors.transparent,
                                 focusColor: Colors.transparent,

+ 4 - 0
lib/flutter_flow/custom_functions.dart

@@ -102,3 +102,7 @@ String? gemeenteNaamById(
           orElse: () => GemeenteModelStruct())
       .gemeentename;
 }
+
+String? favorietenBodyNode(String nid) {
+  return '{"entity_id": ' + nid + ', "entity_type": "node"}';
+}

+ 9 - 1
lib/flutter_flow/internationalization.dart

@@ -440,6 +440,14 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'nl': '',
       'en': '',
     },
+    'ogz7q3xk': {
+      'nl': 'Wachtwoord wijzigen',
+      'en': '',
+    },
+    '3t3g8j3w': {
+      'nl': '',
+      'en': '',
+    },
     'i31b4itp': {
       'nl': 'Account verwijderen',
       'en': '',
@@ -829,7 +837,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
   },
-  // SelectStateDropDownComponentCopy
+  // kanwaegSelectStateDropDownComponentCopy
   {
     '4uyi9owz': {
       'nl': 'Select...',

+ 2 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_model.dart

@@ -7,7 +7,9 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/horecagelegenheid_event_tabel_component_copy_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/custom_code/widgets/index.dart' as custom_widgets;
+import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import 'horecagelegenheid_current_widget.dart'
     show HorecagelegenheidCurrentWidget;

+ 20 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheid_current/horecagelegenheid_current_widget.dart

@@ -7,7 +7,9 @@ import '/flutter_flow/flutter_flow_widgets.dart';
 import '/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/horecagelegenheid_event_tabel_component_copy_widget.dart';
 import '/shared/drawer_component/drawer_component_widget.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import '/custom_code/widgets/index.dart' as custom_widgets;
+import '/flutter_flow/custom_functions.dart' as functions;
 import '/index.dart';
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:carousel_slider/carousel_slider.dart';
@@ -382,6 +384,15 @@ class _HorecagelegenheidCurrentWidgetState
                                     FFAppState().removeFromFavorieteHorecaNids(
                                         widget!.nid!);
                                     safeSetState(() {});
+                                    await actions.drupalRequest(
+                                      'POST',
+                                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
+                                      FFAppState().userSessionname,
+                                      FFAppState().userSessionid,
+                                      FFAppState().userToken,
+                                      functions
+                                          .favorietenBodyNode(widget!.nid!)!,
+                                    );
                                   },
                                 );
                               } else {
@@ -398,6 +409,15 @@ class _HorecagelegenheidCurrentWidgetState
                                     FFAppState()
                                         .addToFavorieteHorecaNids(widget!.nid!);
                                     safeSetState(() {});
+                                    await actions.drupalRequest(
+                                      'POST',
+                                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
+                                      FFAppState().userSessionname,
+                                      FFAppState().userSessionid,
+                                      FFAppState().userToken,
+                                      functions
+                                          .favorietenBodyNode(widget!.nid!)!,
+                                    );
                                   },
                                 );
                               }

+ 2 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_model.dart

@@ -3,6 +3,8 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/flutter_flow/custom_functions.dart' as functions;
 import 'horecagelegenheidoverzicht_kaart_widget.dart'
     show HorecagelegenheidoverzichtKaartWidget;
 import 'package:aligned_tooltip/aligned_tooltip.dart';

+ 20 - 0
lib/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart

@@ -3,6 +3,8 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/flutter_flow/custom_functions.dart' as functions;
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter/material.dart';
@@ -352,6 +354,15 @@ class _HorecagelegenheidoverzichtKaartWidgetState
                                     FFAppState().removeFromFavorieteHorecaNids(
                                         widget!.nid!);
                                     safeSetState(() {});
+                                    await actions.drupalRequest(
+                                      'POST',
+                                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
+                                      FFAppState().userSessionname,
+                                      FFAppState().userSessionid,
+                                      FFAppState().userToken,
+                                      functions
+                                          .favorietenBodyNode(widget!.nid!)!,
+                                    );
                                   },
                                 );
                               } else {
@@ -368,6 +379,15 @@ class _HorecagelegenheidoverzichtKaartWidgetState
                                     FFAppState()
                                         .addToFavorieteHorecaNids(widget!.nid!);
                                     safeSetState(() {});
+                                    await actions.drupalRequest(
+                                      'POST',
+                                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
+                                      FFAppState().userSessionname,
+                                      FFAppState().userSessionid,
+                                      FFAppState().userToken,
+                                      functions
+                                          .favorietenBodyNode(widget!.nid!)!,
+                                    );
                                   },
                                 );
                               }

+ 242 - 0
lib/kanweg/kanwaeg_select_state_drop_down_component_copy/kanwaeg_select_state_drop_down_component_copy_model.dart

@@ -0,0 +1,242 @@
+import '/backend/api_requests/api_calls.dart';
+import '/backend/api_requests/api_streaming.dart';
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_drop_down.dart';
+import '/flutter_flow/flutter_flow_icon_button.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/flutter_flow/form_field_controller.dart';
+import 'dart:convert';
+import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/flutter_flow/custom_functions.dart' as functions;
+import '/index.dart';
+import 'kanwaeg_select_state_drop_down_component_copy_widget.dart'
+    show KanwaegSelectStateDropDownComponentCopyWidget;
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class KanwaegSelectStateDropDownComponentCopyModel
+    extends FlutterFlowModel<KanwaegSelectStateDropDownComponentCopyWidget> {
+  ///  Local state fields for this component.
+
+  bool _isLoadingProvinciesDone = false;
+  set isLoadingProvinciesDone(bool value) {
+    _isLoadingProvinciesDone = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get isLoadingProvinciesDone => _isLoadingProvinciesDone;
+
+  bool _isLoadingGemeenteDone = false;
+  set isLoadingGemeenteDone(bool value) {
+    _isLoadingGemeenteDone = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get isLoadingGemeenteDone => _isLoadingGemeenteDone;
+
+  late LoggableList<GemeenteModelStruct> _favorieteGemeentenLijst =
+      LoggableList([]);
+  set favorieteGemeentenLijst(List<GemeenteModelStruct> value) {
+    if (value != null) {
+      _favorieteGemeentenLijst = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<GemeenteModelStruct> get favorieteGemeentenLijst =>
+      _favorieteGemeentenLijst?..logger = () => debugLogWidgetClass(this);
+  void addToFavorieteGemeentenLijst(GemeenteModelStruct item) =>
+      favorieteGemeentenLijst.add(item);
+  void removeFromFavorieteGemeentenLijst(GemeenteModelStruct item) =>
+      favorieteGemeentenLijst.remove(item);
+  void removeAtIndexFromFavorieteGemeentenLijst(int index) =>
+      favorieteGemeentenLijst.removeAt(index);
+  void insertAtIndexInFavorieteGemeentenLijst(
+          int index, GemeenteModelStruct item) =>
+      favorieteGemeentenLijst.insert(index, item);
+  void updateFavorieteGemeentenLijstAtIndex(
+          int index, Function(GemeenteModelStruct) updateFn) =>
+      favorieteGemeentenLijst[index] = updateFn(favorieteGemeentenLijst[index]);
+
+  ///  State fields for stateful widgets in this component.
+
+  // Stores action output result for [Backend Call - API (provincies)] action in kanwaegSelectStateDropDownComponentCopy widget.
+  ApiCallResponse? _apiProvincieResults;
+  set apiProvincieResults(ApiCallResponse? value) {
+    _apiProvincieResults = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiProvincieResults => _apiProvincieResults;
+
+  // Stores action output result for [Backend Call - API (gemeenten)] action in kanwaegSelectStateDropDownComponentCopy widget.
+  ApiCallResponse? _apiGemeenteResultInitalize;
+  set apiGemeenteResultInitalize(ApiCallResponse? value) {
+    _apiGemeenteResultInitalize = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiGemeenteResultInitalize =>
+      _apiGemeenteResultInitalize;
+
+  // Stores action output result for [Custom Action - getFavorieteGemeenten] action in kanwaegSelectStateDropDownComponentCopy widget.
+  List<GemeenteModelStruct>? _favorieteGemeentenResultaat;
+  set favorieteGemeentenResultaat(List<GemeenteModelStruct>? value) {
+    _favorieteGemeentenResultaat = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<GemeenteModelStruct>? get favorieteGemeentenResultaat =>
+      _favorieteGemeentenResultaat;
+
+  // State field(s) for DropDownProvincie widget.
+  String? _dropDownProvincieValue;
+  set dropDownProvincieValue(String? value) {
+    _dropDownProvincieValue = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get dropDownProvincieValue => _dropDownProvincieValue;
+
+  FormFieldController<String>? dropDownProvincieValueController;
+  // Stores action output result for [Backend Call - API (gemeenten)] action in DropDownProvincie widget.
+  ApiCallResponse? _apiGemeenteResultbutton;
+  set apiGemeenteResultbutton(ApiCallResponse? value) {
+    _apiGemeenteResultbutton = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiGemeenteResultbutton => _apiGemeenteResultbutton;
+
+  // State field(s) for DropDownGemeente widget.
+  String? _dropDownGemeenteValue;
+  set dropDownGemeenteValue(String? value) {
+    _dropDownGemeenteValue = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get dropDownGemeenteValue => _dropDownGemeenteValue;
+
+  FormFieldController<String>? dropDownGemeenteValueController;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        localStates: {
+          'isLoadingProvinciesDone': debugSerializeParam(
+            isLoadingProvinciesDone,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            searchReference:
+                'reference=QigKIAoXaXNMb2FkaW5nUHJvdmluY2llc0RvbmUSBTdseXV4cgQIBSABUABaF2lzTG9hZGluZ1Byb3ZpbmNpZXNEb25lYidrYW53YWVnU2VsZWN0U3RhdGVEcm9wRG93bkNvbXBvbmVudENvcHk=',
+            name: 'bool',
+            nullable: false,
+          ),
+          'isLoadingGemeenteDone': debugSerializeParam(
+            isLoadingGemeenteDone,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            searchReference:
+                'reference=Qi8KHgoVaXNMb2FkaW5nR2VtZWVudGVEb25lEgUzY3BwYioHEgVmYWxzZXIECAUgAVAAWhVpc0xvYWRpbmdHZW1lZW50ZURvbmViJ2thbndhZWdTZWxlY3RTdGF0ZURyb3BEb3duQ29tcG9uZW50Q29weQ==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'favorieteGemeentenLijst': debugSerializeParam(
+            favorieteGemeentenLijst,
+            ParamType.DataStruct,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            searchReference:
+                'reference=QkIKIAoXZmF2b3JpZXRlR2VtZWVudGVuTGlqc3QSBWZvbnp2ch4SAggUKhgSFgoNR2VtZWVudGVNb2RlbBIFODJ1N3VQAFoXZmF2b3JpZXRlR2VtZWVudGVuTGlqc3RiJ2thbndhZWdTZWxlY3RTdGF0ZURyb3BEb3duQ29tcG9uZW50Q29weQ==',
+            name: 'GemeenteModel',
+            nullable: false,
+          )
+        }.entries,
+        widgetStates: {
+          'dropDownProvincieValue': debugSerializeParam(
+            dropDownProvincieValue,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            name: 'String',
+            nullable: true,
+          ),
+          'dropDownGemeenteValue': debugSerializeParam(
+            dropDownGemeenteValue,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            name: 'String',
+            nullable: true,
+          )
+        }.entries,
+        actionOutputs: {
+          'apiProvincieResults': debugSerializeParam(
+            apiProvincieResults,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            name: 'ApiCallResponse',
+            nullable: true,
+          ),
+          'apiGemeenteResultInitalize': debugSerializeParam(
+            apiGemeenteResultInitalize,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            name: 'ApiCallResponse',
+            nullable: true,
+          ),
+          'favorieteGemeentenResultaat': debugSerializeParam(
+            favorieteGemeentenResultaat,
+            ParamType.DataStruct,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            name: 'GemeenteModel',
+            nullable: true,
+          ),
+          'apiGemeenteResultbutton': debugSerializeParam(
+            apiGemeenteResultbutton,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+            name: 'ApiCallResponse',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+        searchReference:
+            'reference=OidrYW53YWVnU2VsZWN0U3RhdGVEcm9wRG93bkNvbXBvbmVudENvcHlQAFona2Fud2FlZ1NlbGVjdFN0YXRlRHJvcERvd25Db21wb25lbnRDb3B5',
+        widgetClassName: 'kanwaegSelectStateDropDownComponentCopy',
+      );
+}

+ 515 - 0
lib/kanweg/kanwaeg_select_state_drop_down_component_copy/kanwaeg_select_state_drop_down_component_copy_widget.dart

@@ -0,0 +1,515 @@
+import '/backend/api_requests/api_calls.dart';
+import '/backend/api_requests/api_streaming.dart';
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_drop_down.dart';
+import '/flutter_flow/flutter_flow_icon_button.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/flutter_flow/form_field_controller.dart';
+import 'dart:convert';
+import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/flutter_flow/custom_functions.dart' as functions;
+import '/index.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'kanwaeg_select_state_drop_down_component_copy_model.dart';
+export 'kanwaeg_select_state_drop_down_component_copy_model.dart';
+
+class KanwaegSelectStateDropDownComponentCopyWidget extends StatefulWidget {
+  const KanwaegSelectStateDropDownComponentCopyWidget({super.key});
+
+  @override
+  State<KanwaegSelectStateDropDownComponentCopyWidget> createState() =>
+      _KanwaegSelectStateDropDownComponentCopyWidgetState();
+}
+
+class _KanwaegSelectStateDropDownComponentCopyWidgetState
+    extends State<KanwaegSelectStateDropDownComponentCopyWidget>
+    with RouteAware {
+  late KanwaegSelectStateDropDownComponentCopyModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model = createModel(
+        context, () => KanwaegSelectStateDropDownComponentCopyModel());
+
+    // On component load action.
+    SchedulerBinding.instance.addPostFrameCallback((_) async {
+      _model.isLoadingProvinciesDone = false;
+      safeSetState(() {});
+      if (!(FFAppState().provincieSelectId != null &&
+          FFAppState().provincieSelectId != '')) {
+        FFAppState().provincieSelectId = '28666';
+        FFAppState().provincieSelectName = 'Noord-Holland';
+        safeSetState(() {});
+      }
+      if (!(FFAppState().gemeenteSelectId != null &&
+          FFAppState().gemeenteSelectId != '')) {
+        FFAppState().gemeenteSelectId = '28694';
+        FFAppState().gemeenteSelectNaam = 'Amsterdam (gemeente)';
+        safeSetState(() {});
+      }
+      _model.apiProvincieResults = await ProvinciesCall.call();
+
+      if ((_model.apiProvincieResults?.succeeded ?? true)) {
+        FFAppState().provincielijst = ((_model.apiProvincieResults?.jsonBody ??
+                    '')
+                .toList()
+                .map<ProvincieModelStruct?>(ProvincieModelStruct.maybeFromMap)
+                .toList() as Iterable<ProvincieModelStruct?>)
+            .withoutNulls
+            .toList()
+            .cast<ProvincieModelStruct>();
+        FFAppState().update(() {});
+      } else {
+        FFAppState().deleteProvincielijst();
+        FFAppState().provincielijst = [];
+
+        FFAppState().update(() {});
+      }
+
+      _model.isLoadingProvinciesDone = true;
+      safeSetState(() {});
+      if (!(FFAppState().provincieSelectId != null &&
+          FFAppState().provincieSelectId != '')) {
+        _model.isLoadingProvinciesDone = true;
+        safeSetState(() {});
+      }
+      if (FFAppState().gemeenteSelectId != null &&
+          FFAppState().gemeenteSelectId != '') {
+        _model.apiGemeenteResultInitalize = await GemeentenCall.call(
+          provincieid: FFAppState().provincieSelectId,
+        );
+
+        FFAppState().gemeentelijst =
+            ((_model.apiGemeenteResultInitalize?.jsonBody ?? '')
+                    .toList()
+                    .map<GemeenteModelStruct?>(GemeenteModelStruct.maybeFromMap)
+                    .toList() as Iterable<GemeenteModelStruct?>)
+                .withoutNulls
+                .toList()
+                .cast<GemeenteModelStruct>();
+        safeSetState(() {});
+        _model.isLoadingGemeenteDone = true;
+        safeSetState(() {});
+      }
+      safeSetState(() {});
+      _model.favorieteGemeentenResultaat = await actions.getFavorieteGemeenten(
+        FFAppState().favorieteGemeenteIds.toList(),
+      );
+      _model.favorieteGemeentenLijst = _model.favorieteGemeentenResultaat!
+          .toList()
+          .cast<GemeenteModelStruct>();
+      safeSetState(() {});
+    });
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(
+      KanwaegSelectStateDropDownComponentCopyWidget 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);
+    context.watch<FFAppState>();
+
+    return Container(
+      decoration: BoxDecoration(
+        color: FlutterFlowTheme.of(context).secondaryBackground,
+      ),
+      child: Column(
+        mainAxisSize: MainAxisSize.max,
+        children: [
+          if (_model.isLoadingProvinciesDone)
+            FlutterFlowDropDown<String>(
+              controller: _model.dropDownProvincieValueController ??=
+                  FormFieldController<String>(
+                _model.dropDownProvincieValue ??=
+                    FFAppState().provincieSelectId,
+              ),
+              options: List<String>.from(FFAppState()
+                  .provincielijst
+                  .map((e) => e.provincieid)
+                  .toList()),
+              optionLabels: FFAppState()
+                  .provincielijst
+                  .map((e) => e.provinciename)
+                  .toList(),
+              onChanged: (val) async {
+                safeSetState(() =>
+                    _model.dropDownProvincieValue = val); // Action 1 gemeente
+                _model.isLoadingGemeenteDone = false;
+                // provincieidselect
+                // Action 2 update appstate provincie select
+                FFAppState().provincieSelectId = _model.dropDownProvincieValue!;
+                FFAppState().provincieSelectName = functions.provincieNaamById(
+                    FFAppState().provincielijst.toList(),
+                    FFAppState().provincieSelectId)!;
+                safeSetState(() {});
+                _model.apiGemeenteResultbutton = await GemeentenCall.call(
+                  provincieid: FFAppState().provincieSelectId,
+                );
+
+                FFAppState().gemeentelijst =
+                    ((_model.apiGemeenteResultbutton?.jsonBody ?? '')
+                            .toList()
+                            .map<GemeenteModelStruct?>(
+                                GemeenteModelStruct.maybeFromMap)
+                            .toList() as Iterable<GemeenteModelStruct?>)
+                        .withoutNulls
+                        .toList()
+                        .cast<GemeenteModelStruct>();
+                safeSetState(() {});
+                // Action 4 IsLoadingGemeenteDone
+                _model.isLoadingGemeenteDone = true;
+                FFAppState().gemeentelijst =
+                    ((_model.apiGemeenteResultbutton?.jsonBody ?? '')
+                            .toList()
+                            .map<GemeenteModelStruct?>(
+                                GemeenteModelStruct.maybeFromMap)
+                            .toList() as Iterable<GemeenteModelStruct?>)
+                        .withoutNulls
+                        .toList()
+                        .cast<GemeenteModelStruct>();
+                _model.updatePage(() {});
+
+                safeSetState(() {});
+              },
+              width: 200.0,
+              height: 40.0,
+              textStyle: FlutterFlowTheme.of(context).bodyMedium.override(
+                    font: GoogleFonts.inter(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                  ),
+              hintText: FFLocalizations.of(context).getText(
+                '4uyi9owz' /* Select... */,
+              ),
+              icon: Icon(
+                Icons.keyboard_arrow_down_rounded,
+                color: FlutterFlowTheme.of(context).secondaryText,
+                size: 24.0,
+              ),
+              fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+              elevation: 2.0,
+              borderColor: Colors.transparent,
+              borderWidth: 0.0,
+              borderRadius: 8.0,
+              margin: EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
+              hidesUnderline: true,
+              isOverButton: false,
+              isSearchable: false,
+              isMultiSelect: false,
+            ),
+          if (_model.isLoadingGemeenteDone)
+            FlutterFlowDropDown<String>(
+              controller: _model.dropDownGemeenteValueController ??=
+                  FormFieldController<String>(
+                _model.dropDownGemeenteValue ??= FFAppState().gemeenteSelectId,
+              ),
+              options: List<String>.from(
+                  FFAppState().gemeentelijst.map((e) => e.gemeenteid).toList()),
+              optionLabels: FFAppState()
+                  .gemeentelijst
+                  .map((e) => e.gemeentename)
+                  .toList(),
+              onChanged: (val) async {
+                safeSetState(() => _model.dropDownGemeenteValue = val);
+                FFAppState().gemeenteSelectId = _model.dropDownGemeenteValue!;
+                FFAppState().gemeenteSelectNaam = functions.gemeenteNaamById(
+                    FFAppState().gemeentelijst.toList(),
+                    FFAppState().gemeenteSelectId)!;
+                safeSetState(() {});
+              },
+              width: 200.0,
+              height: 40.0,
+              textStyle: FlutterFlowTheme.of(context).bodyMedium.override(
+                    font: GoogleFonts.inter(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                  ),
+              hintText: FFLocalizations.of(context).getText(
+                '4a1hzuht' /* Select... */,
+              ),
+              icon: Icon(
+                Icons.keyboard_arrow_down_rounded,
+                color: FlutterFlowTheme.of(context).secondaryText,
+                size: 24.0,
+              ),
+              fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+              elevation: 2.0,
+              borderColor: Colors.transparent,
+              borderWidth: 0.0,
+              borderRadius: 8.0,
+              margin: EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
+              hidesUnderline: true,
+              isOverButton: false,
+              isSearchable: false,
+              isMultiSelect: false,
+            ),
+          Row(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Text(
+                FFLocalizations.of(context).getText(
+                  't871osuh' /* Toevoegen favoriet */,
+                ),
+                style: FlutterFlowTheme.of(context).bodyMedium.override(
+                      font: GoogleFonts.inter(
+                        fontWeight:
+                            FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                        fontStyle:
+                            FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                      ),
+                      letterSpacing: 0.0,
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+              ),
+              Builder(
+                builder: (context) {
+                  if (FFAppState()
+                          .favorieteGemeenteIds
+                          .contains(FFAppState().gemeenteSelectId) ==
+                      true) {
+                    return FlutterFlowIconButton(
+                      borderRadius: 8.0,
+                      buttonSize: 40.0,
+                      fillColor: Color(0xFFB50808),
+                      icon: Icon(
+                        Icons.favorite,
+                        color: Colors.white,
+                        size: 24.0,
+                      ),
+                      onPressed: () async {
+                        await actions.drupalRequest(
+                          'POST',
+                          'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
+                          FFAppState().userSessionname,
+                          FFAppState().userSessionid,
+                          FFAppState().userToken,
+                          '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                        );
+                        FFAppState().removeFromFavorieteGemeenteIds(
+                            FFAppState().gemeenteSelectId);
+                        safeSetState(() {});
+                      },
+                    );
+                  } else {
+                    return FlutterFlowIconButton(
+                      borderRadius: 8.0,
+                      buttonSize: 40.0,
+                      fillColor: Color(0xFFB50808),
+                      icon: Icon(
+                        Icons.favorite_border,
+                        color: Colors.white,
+                        size: 24.0,
+                      ),
+                      onPressed: () async {
+                        await actions.drupalRequest(
+                          'POST',
+                          'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
+                          FFAppState().userSessionname,
+                          FFAppState().userSessionid,
+                          FFAppState().userToken,
+                          '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                        );
+                        FFAppState().addToFavorieteGemeenteIds(
+                            FFAppState().gemeenteSelectId);
+                        safeSetState(() {});
+                      },
+                    );
+                  }
+                },
+              ),
+            ],
+          ),
+          FFButtonWidget(
+            onPressed: () async {
+              context.pushNamed(HomeWidget.routeName);
+            },
+            text: FFLocalizations.of(context).getText(
+              'zb8hr9df' /* Toepassen */,
+            ),
+            options: FFButtonOptions(
+              height: 40.0,
+              padding: EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 0.0),
+              iconPadding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
+              color: FlutterFlowTheme.of(context).primary,
+              textStyle: FlutterFlowTheme.of(context).titleSmall.override(
+                    font: GoogleFonts.interTight(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).titleSmall.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).titleSmall.fontStyle,
+                    ),
+                    color: Colors.white,
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).titleSmall.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).titleSmall.fontStyle,
+                  ),
+              elevation: 0.0,
+              borderRadius: BorderRadius.circular(8.0),
+            ),
+          ),
+          Builder(
+            builder: (context) {
+              final favorieteGemeenteItem =
+                  _model.favorieteGemeentenLijst.toList();
+              _model.debugGeneratorVariables[
+                      'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] =
+                  debugSerializeParam(
+                favorieteGemeenteItem.take(100),
+                ParamType.DataStruct,
+                isList: true,
+                link:
+                    'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=kanwaegSelectStateDropDownComponentCopy',
+                name: 'GemeenteModel',
+                nullable: false,
+              );
+              debugLogWidgetClass(_model);
+
+              return Wrap(
+                spacing: 0.0,
+                runSpacing: 0.0,
+                alignment: WrapAlignment.start,
+                crossAxisAlignment: WrapCrossAlignment.start,
+                direction: Axis.horizontal,
+                runAlignment: WrapAlignment.start,
+                verticalDirection: VerticalDirection.down,
+                clipBehavior: Clip.none,
+                children: List.generate(favorieteGemeenteItem.length,
+                    (favorieteGemeenteItemIndex) {
+                  final favorieteGemeenteItemItem =
+                      favorieteGemeenteItem[favorieteGemeenteItemIndex];
+                  return InkWell(
+                    splashColor: Colors.transparent,
+                    focusColor: Colors.transparent,
+                    hoverColor: Colors.transparent,
+                    highlightColor: Colors.transparent,
+                    onTap: () async {
+                      FFAppState().gemeenteSelectId =
+                          favorieteGemeenteItemItem.gemeenteid;
+                      FFAppState().gemeenteSelectNaam =
+                          favorieteGemeenteItemItem.gemeentename;
+                      safeSetState(() {});
+
+                      context.pushNamed(HomeWidget.routeName);
+                    },
+                    child: Container(
+                      decoration: BoxDecoration(
+                        color: FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      child: Text(
+                        favorieteGemeenteItemItem.gemeentename,
+                        style: FlutterFlowTheme.of(context).bodyMedium.override(
+                              font: GoogleFonts.inter(
+                                fontWeight: FlutterFlowTheme.of(context)
+                                    .bodyMedium
+                                    .fontWeight,
+                                fontStyle: FlutterFlowTheme.of(context)
+                                    .bodyMedium
+                                    .fontStyle,
+                              ),
+                              letterSpacing: 0.0,
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontStyle,
+                            ),
+                      ),
+                    ),
+                  );
+                }),
+              );
+            },
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 14 - 7
lib/selecteer_plaats/select_state_drop_down_component/select_state_drop_down_component_widget.dart

@@ -445,12 +445,8 @@ class _SelectStateDropDownComponentWidgetState
           ),
           Builder(
             builder: (context) {
-              final favorieteGemeenteItem = _model.favorieteGemeentenLijst
-                  .map((e) => getJsonField(
-                        e,
-                        r'''$.titel''',
-                      ))
-                  .toList();
+              final favorieteGemeenteItem =
+                  _model.favorieteGemeentenLijst.map((e) => e).toList();
               _model.debugGeneratorVariables[
                       'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] =
                   debugSerializeParam(
@@ -491,6 +487,14 @@ class _SelectStateDropDownComponentWidgetState
                         favorieteGemeenteItemItem,
                         r'''$.titel''',
                       ).toString();
+                      FFAppState().provincieSelectId = getJsonField(
+                        favorieteGemeenteItemItem,
+                        r'''$.parent_nid''',
+                      ).toString();
+                      FFAppState().provincieSelectName = getJsonField(
+                        favorieteGemeenteItemItem,
+                        r'''$.parent_titel''',
+                      ).toString();
                       safeSetState(() {});
 
                       context.pushNamed(HomeWidget.routeName);
@@ -500,7 +504,10 @@ class _SelectStateDropDownComponentWidgetState
                         color: FlutterFlowTheme.of(context).secondaryBackground,
                       ),
                       child: Text(
-                        favorieteGemeenteItemItem.toString(),
+                        getJsonField(
+                          favorieteGemeenteItemItem,
+                          r'''$.titel''',
+                        ).toString(),
                         style: FlutterFlowTheme.of(context).bodyMedium.override(
                               font: GoogleFonts.inter(
                                 fontWeight: FlutterFlowTheme.of(context)

+ 242 - 0
lib/selecteer_plaats/select_state_drop_down_component_copy/select_state_drop_down_component_copy_model.dart

@@ -0,0 +1,242 @@
+import '/backend/api_requests/api_calls.dart';
+import '/backend/api_requests/api_streaming.dart';
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_drop_down.dart';
+import '/flutter_flow/flutter_flow_icon_button.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/flutter_flow/form_field_controller.dart';
+import 'dart:convert';
+import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/flutter_flow/custom_functions.dart' as functions;
+import '/index.dart';
+import 'select_state_drop_down_component_copy_widget.dart'
+    show SelectStateDropDownComponentCopyWidget;
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+
+class SelectStateDropDownComponentCopyModel
+    extends FlutterFlowModel<SelectStateDropDownComponentCopyWidget> {
+  ///  Local state fields for this component.
+
+  bool _isLoadingProvinciesDone = false;
+  set isLoadingProvinciesDone(bool value) {
+    _isLoadingProvinciesDone = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get isLoadingProvinciesDone => _isLoadingProvinciesDone;
+
+  bool _isLoadingGemeenteDone = false;
+  set isLoadingGemeenteDone(bool value) {
+    _isLoadingGemeenteDone = value;
+    debugLogWidgetClass(this);
+  }
+
+  bool get isLoadingGemeenteDone => _isLoadingGemeenteDone;
+
+  late LoggableList<GemeenteModelStruct> _favorieteGemeentenLijst =
+      LoggableList([]);
+  set favorieteGemeentenLijst(List<GemeenteModelStruct> value) {
+    if (value != null) {
+      _favorieteGemeentenLijst = LoggableList(value);
+    }
+
+    debugLogWidgetClass(this);
+  }
+
+  List<GemeenteModelStruct> get favorieteGemeentenLijst =>
+      _favorieteGemeentenLijst?..logger = () => debugLogWidgetClass(this);
+  void addToFavorieteGemeentenLijst(GemeenteModelStruct item) =>
+      favorieteGemeentenLijst.add(item);
+  void removeFromFavorieteGemeentenLijst(GemeenteModelStruct item) =>
+      favorieteGemeentenLijst.remove(item);
+  void removeAtIndexFromFavorieteGemeentenLijst(int index) =>
+      favorieteGemeentenLijst.removeAt(index);
+  void insertAtIndexInFavorieteGemeentenLijst(
+          int index, GemeenteModelStruct item) =>
+      favorieteGemeentenLijst.insert(index, item);
+  void updateFavorieteGemeentenLijstAtIndex(
+          int index, Function(GemeenteModelStruct) updateFn) =>
+      favorieteGemeentenLijst[index] = updateFn(favorieteGemeentenLijst[index]);
+
+  ///  State fields for stateful widgets in this component.
+
+  // Stores action output result for [Backend Call - API (provincies)] action in SelectStateDropDownComponentCopy widget.
+  ApiCallResponse? _apiProvincieResults;
+  set apiProvincieResults(ApiCallResponse? value) {
+    _apiProvincieResults = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiProvincieResults => _apiProvincieResults;
+
+  // Stores action output result for [Backend Call - API (gemeenten)] action in SelectStateDropDownComponentCopy widget.
+  ApiCallResponse? _apiGemeenteResultInitalize;
+  set apiGemeenteResultInitalize(ApiCallResponse? value) {
+    _apiGemeenteResultInitalize = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiGemeenteResultInitalize =>
+      _apiGemeenteResultInitalize;
+
+  // Stores action output result for [Custom Action - getFavorieteGemeenten] action in SelectStateDropDownComponentCopy widget.
+  List<GemeenteModelStruct>? _favorieteGemeentenResultaat;
+  set favorieteGemeentenResultaat(List<GemeenteModelStruct>? value) {
+    _favorieteGemeentenResultaat = value;
+    debugLogWidgetClass(this);
+  }
+
+  List<GemeenteModelStruct>? get favorieteGemeentenResultaat =>
+      _favorieteGemeentenResultaat;
+
+  // State field(s) for DropDownProvincie widget.
+  String? _dropDownProvincieValue;
+  set dropDownProvincieValue(String? value) {
+    _dropDownProvincieValue = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get dropDownProvincieValue => _dropDownProvincieValue;
+
+  FormFieldController<String>? dropDownProvincieValueController;
+  // Stores action output result for [Backend Call - API (gemeenten)] action in DropDownProvincie widget.
+  ApiCallResponse? _apiGemeenteResultbutton;
+  set apiGemeenteResultbutton(ApiCallResponse? value) {
+    _apiGemeenteResultbutton = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiGemeenteResultbutton => _apiGemeenteResultbutton;
+
+  // State field(s) for DropDownGemeente widget.
+  String? _dropDownGemeenteValue;
+  set dropDownGemeenteValue(String? value) {
+    _dropDownGemeenteValue = value;
+    debugLogWidgetClass(this);
+  }
+
+  String? get dropDownGemeenteValue => _dropDownGemeenteValue;
+
+  FormFieldController<String>? dropDownGemeenteValueController;
+
+  final Map<String, DebugDataField> debugGeneratorVariables = {};
+  final Map<String, DebugDataField> debugBackendQueries = {};
+  final Map<String, FlutterFlowModel> widgetBuilderComponents = {};
+  @override
+  void initState(BuildContext context) {}
+
+  @override
+  void dispose() {}
+
+  @override
+  WidgetClassDebugData toWidgetClassDebugData() => WidgetClassDebugData(
+        localStates: {
+          'isLoadingProvinciesDone': debugSerializeParam(
+            isLoadingProvinciesDone,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            searchReference:
+                'reference=QigKIAoXaXNMb2FkaW5nUHJvdmluY2llc0RvbmUSBTdseXV4cgQIBSABUABaF2lzTG9hZGluZ1Byb3ZpbmNpZXNEb25lYiBTZWxlY3RTdGF0ZURyb3BEb3duQ29tcG9uZW50Q29weQ==',
+            name: 'bool',
+            nullable: false,
+          ),
+          'isLoadingGemeenteDone': debugSerializeParam(
+            isLoadingGemeenteDone,
+            ParamType.bool,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            searchReference:
+                'reference=Qi8KHgoVaXNMb2FkaW5nR2VtZWVudGVEb25lEgUzY3BwYioHEgVmYWxzZXIECAUgAVAAWhVpc0xvYWRpbmdHZW1lZW50ZURvbmViIFNlbGVjdFN0YXRlRHJvcERvd25Db21wb25lbnRDb3B5',
+            name: 'bool',
+            nullable: false,
+          ),
+          'favorieteGemeentenLijst': debugSerializeParam(
+            favorieteGemeentenLijst,
+            ParamType.DataStruct,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            searchReference:
+                'reference=QkIKIAoXZmF2b3JpZXRlR2VtZWVudGVuTGlqc3QSBWZvbnp2ch4SAggUKhgSFgoNR2VtZWVudGVNb2RlbBIFODJ1N3VQAFoXZmF2b3JpZXRlR2VtZWVudGVuTGlqc3RiIFNlbGVjdFN0YXRlRHJvcERvd25Db21wb25lbnRDb3B5',
+            name: 'GemeenteModel',
+            nullable: false,
+          )
+        }.entries,
+        widgetStates: {
+          'dropDownProvincieValue': debugSerializeParam(
+            dropDownProvincieValue,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            name: 'String',
+            nullable: true,
+          ),
+          'dropDownGemeenteValue': debugSerializeParam(
+            dropDownGemeenteValue,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            name: 'String',
+            nullable: true,
+          )
+        }.entries,
+        actionOutputs: {
+          'apiProvincieResults': debugSerializeParam(
+            apiProvincieResults,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            name: 'ApiCallResponse',
+            nullable: true,
+          ),
+          'apiGemeenteResultInitalize': debugSerializeParam(
+            apiGemeenteResultInitalize,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            name: 'ApiCallResponse',
+            nullable: true,
+          ),
+          'favorieteGemeentenResultaat': debugSerializeParam(
+            favorieteGemeentenResultaat,
+            ParamType.DataStruct,
+            isList: true,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            name: 'GemeenteModel',
+            nullable: true,
+          ),
+          'apiGemeenteResultbutton': debugSerializeParam(
+            apiGemeenteResultbutton,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+            name: 'ApiCallResponse',
+            nullable: true,
+          )
+        }.entries,
+        generatorVariables: debugGeneratorVariables.entries,
+        backendQueries: debugBackendQueries.entries,
+        componentStates: {
+          ...widgetBuilderComponents.map(
+            (key, value) => MapEntry(
+              key,
+              value.toWidgetClassDebugData(),
+            ),
+          ),
+        }.withoutNulls.entries,
+        link:
+            'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd/tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+        searchReference:
+            'reference=OiBTZWxlY3RTdGF0ZURyb3BEb3duQ29tcG9uZW50Q29weVAAWiBTZWxlY3RTdGF0ZURyb3BEb3duQ29tcG9uZW50Q29weQ==',
+        widgetClassName: 'SelectStateDropDownComponentCopy',
+      );
+}

+ 513 - 0
lib/selecteer_plaats/select_state_drop_down_component_copy/select_state_drop_down_component_copy_widget.dart

@@ -0,0 +1,513 @@
+import '/backend/api_requests/api_calls.dart';
+import '/backend/api_requests/api_streaming.dart';
+import '/backend/schema/structs/index.dart';
+import '/flutter_flow/flutter_flow_drop_down.dart';
+import '/flutter_flow/flutter_flow_icon_button.dart';
+import '/flutter_flow/flutter_flow_theme.dart';
+import '/flutter_flow/flutter_flow_util.dart';
+import '/flutter_flow/flutter_flow_widgets.dart';
+import '/flutter_flow/form_field_controller.dart';
+import 'dart:convert';
+import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
+import '/flutter_flow/custom_functions.dart' as functions;
+import '/index.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:provider/provider.dart';
+import 'select_state_drop_down_component_copy_model.dart';
+export 'select_state_drop_down_component_copy_model.dart';
+
+class SelectStateDropDownComponentCopyWidget extends StatefulWidget {
+  const SelectStateDropDownComponentCopyWidget({super.key});
+
+  @override
+  State<SelectStateDropDownComponentCopyWidget> createState() =>
+      _SelectStateDropDownComponentCopyWidgetState();
+}
+
+class _SelectStateDropDownComponentCopyWidgetState
+    extends State<SelectStateDropDownComponentCopyWidget> with RouteAware {
+  late SelectStateDropDownComponentCopyModel _model;
+
+  @override
+  void setState(VoidCallback callback) {
+    super.setState(callback);
+    _model.onUpdate();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    _model =
+        createModel(context, () => SelectStateDropDownComponentCopyModel());
+
+    // On component load action.
+    SchedulerBinding.instance.addPostFrameCallback((_) async {
+      _model.isLoadingProvinciesDone = false;
+      safeSetState(() {});
+      if (!(FFAppState().provincieSelectId != null &&
+          FFAppState().provincieSelectId != '')) {
+        FFAppState().provincieSelectId = '28666';
+        FFAppState().provincieSelectName = 'Noord-Holland';
+        safeSetState(() {});
+      }
+      if (!(FFAppState().gemeenteSelectId != null &&
+          FFAppState().gemeenteSelectId != '')) {
+        FFAppState().gemeenteSelectId = '28694';
+        FFAppState().gemeenteSelectNaam = 'Amsterdam (gemeente)';
+        safeSetState(() {});
+      }
+      _model.apiProvincieResults = await ProvinciesCall.call();
+
+      if ((_model.apiProvincieResults?.succeeded ?? true)) {
+        FFAppState().provincielijst = ((_model.apiProvincieResults?.jsonBody ??
+                    '')
+                .toList()
+                .map<ProvincieModelStruct?>(ProvincieModelStruct.maybeFromMap)
+                .toList() as Iterable<ProvincieModelStruct?>)
+            .withoutNulls
+            .toList()
+            .cast<ProvincieModelStruct>();
+        FFAppState().update(() {});
+      } else {
+        FFAppState().deleteProvincielijst();
+        FFAppState().provincielijst = [];
+
+        FFAppState().update(() {});
+      }
+
+      _model.isLoadingProvinciesDone = true;
+      safeSetState(() {});
+      if (!(FFAppState().provincieSelectId != null &&
+          FFAppState().provincieSelectId != '')) {
+        _model.isLoadingProvinciesDone = true;
+        safeSetState(() {});
+      }
+      if (FFAppState().gemeenteSelectId != null &&
+          FFAppState().gemeenteSelectId != '') {
+        _model.apiGemeenteResultInitalize = await GemeentenCall.call(
+          provincieid: FFAppState().provincieSelectId,
+        );
+
+        FFAppState().gemeentelijst =
+            ((_model.apiGemeenteResultInitalize?.jsonBody ?? '')
+                    .toList()
+                    .map<GemeenteModelStruct?>(GemeenteModelStruct.maybeFromMap)
+                    .toList() as Iterable<GemeenteModelStruct?>)
+                .withoutNulls
+                .toList()
+                .cast<GemeenteModelStruct>();
+        safeSetState(() {});
+        _model.isLoadingGemeenteDone = true;
+        safeSetState(() {});
+      }
+      safeSetState(() {});
+      _model.favorieteGemeentenResultaat = await actions.getFavorieteGemeenten(
+        FFAppState().favorieteGemeenteIds.toList(),
+      );
+      _model.favorieteGemeentenLijst = _model.favorieteGemeentenResultaat!
+          .toList()
+          .cast<GemeenteModelStruct>();
+      safeSetState(() {});
+    });
+  }
+
+  @override
+  void dispose() {
+    routeObserver.unsubscribe(this);
+
+    _model.maybeDispose();
+
+    super.dispose();
+  }
+
+  @override
+  void didUpdateWidget(SelectStateDropDownComponentCopyWidget 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);
+    context.watch<FFAppState>();
+
+    return Container(
+      decoration: BoxDecoration(
+        color: FlutterFlowTheme.of(context).secondaryBackground,
+      ),
+      child: Column(
+        mainAxisSize: MainAxisSize.max,
+        children: [
+          if (_model.isLoadingProvinciesDone)
+            FlutterFlowDropDown<String>(
+              controller: _model.dropDownProvincieValueController ??=
+                  FormFieldController<String>(
+                _model.dropDownProvincieValue ??=
+                    FFAppState().provincieSelectId,
+              ),
+              options: List<String>.from(FFAppState()
+                  .provincielijst
+                  .map((e) => e.provincieid)
+                  .toList()),
+              optionLabels: FFAppState()
+                  .provincielijst
+                  .map((e) => e.provinciename)
+                  .toList(),
+              onChanged: (val) async {
+                safeSetState(() =>
+                    _model.dropDownProvincieValue = val); // Action 1 gemeente
+                _model.isLoadingGemeenteDone = false;
+                // provincieidselect
+                // Action 2 update appstate provincie select
+                FFAppState().provincieSelectId = _model.dropDownProvincieValue!;
+                FFAppState().provincieSelectName = functions.provincieNaamById(
+                    FFAppState().provincielijst.toList(),
+                    FFAppState().provincieSelectId)!;
+                safeSetState(() {});
+                _model.apiGemeenteResultbutton = await GemeentenCall.call(
+                  provincieid: FFAppState().provincieSelectId,
+                );
+
+                FFAppState().gemeentelijst =
+                    ((_model.apiGemeenteResultbutton?.jsonBody ?? '')
+                            .toList()
+                            .map<GemeenteModelStruct?>(
+                                GemeenteModelStruct.maybeFromMap)
+                            .toList() as Iterable<GemeenteModelStruct?>)
+                        .withoutNulls
+                        .toList()
+                        .cast<GemeenteModelStruct>();
+                safeSetState(() {});
+                // Action 4 IsLoadingGemeenteDone
+                _model.isLoadingGemeenteDone = true;
+                FFAppState().gemeentelijst =
+                    ((_model.apiGemeenteResultbutton?.jsonBody ?? '')
+                            .toList()
+                            .map<GemeenteModelStruct?>(
+                                GemeenteModelStruct.maybeFromMap)
+                            .toList() as Iterable<GemeenteModelStruct?>)
+                        .withoutNulls
+                        .toList()
+                        .cast<GemeenteModelStruct>();
+                _model.updatePage(() {});
+
+                safeSetState(() {});
+              },
+              width: 200.0,
+              height: 40.0,
+              textStyle: FlutterFlowTheme.of(context).bodyMedium.override(
+                    font: GoogleFonts.inter(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                  ),
+              hintText: FFLocalizations.of(context).getText(
+                '4uyi9owz' /* Select... */,
+              ),
+              icon: Icon(
+                Icons.keyboard_arrow_down_rounded,
+                color: FlutterFlowTheme.of(context).secondaryText,
+                size: 24.0,
+              ),
+              fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+              elevation: 2.0,
+              borderColor: Colors.transparent,
+              borderWidth: 0.0,
+              borderRadius: 8.0,
+              margin: EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
+              hidesUnderline: true,
+              isOverButton: false,
+              isSearchable: false,
+              isMultiSelect: false,
+            ),
+          if (_model.isLoadingGemeenteDone)
+            FlutterFlowDropDown<String>(
+              controller: _model.dropDownGemeenteValueController ??=
+                  FormFieldController<String>(
+                _model.dropDownGemeenteValue ??= FFAppState().gemeenteSelectId,
+              ),
+              options: List<String>.from(
+                  FFAppState().gemeentelijst.map((e) => e.gemeenteid).toList()),
+              optionLabels: FFAppState()
+                  .gemeentelijst
+                  .map((e) => e.gemeentename)
+                  .toList(),
+              onChanged: (val) async {
+                safeSetState(() => _model.dropDownGemeenteValue = val);
+                FFAppState().gemeenteSelectId = _model.dropDownGemeenteValue!;
+                FFAppState().gemeenteSelectNaam = functions.gemeenteNaamById(
+                    FFAppState().gemeentelijst.toList(),
+                    FFAppState().gemeenteSelectId)!;
+                safeSetState(() {});
+              },
+              width: 200.0,
+              height: 40.0,
+              textStyle: FlutterFlowTheme.of(context).bodyMedium.override(
+                    font: GoogleFonts.inter(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                  ),
+              hintText: FFLocalizations.of(context).getText(
+                '4a1hzuht' /* Select... */,
+              ),
+              icon: Icon(
+                Icons.keyboard_arrow_down_rounded,
+                color: FlutterFlowTheme.of(context).secondaryText,
+                size: 24.0,
+              ),
+              fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+              elevation: 2.0,
+              borderColor: Colors.transparent,
+              borderWidth: 0.0,
+              borderRadius: 8.0,
+              margin: EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
+              hidesUnderline: true,
+              isOverButton: false,
+              isSearchable: false,
+              isMultiSelect: false,
+            ),
+          Row(
+            mainAxisSize: MainAxisSize.max,
+            children: [
+              Text(
+                FFLocalizations.of(context).getText(
+                  't871osuh' /* Toevoegen favoriet */,
+                ),
+                style: FlutterFlowTheme.of(context).bodyMedium.override(
+                      font: GoogleFonts.inter(
+                        fontWeight:
+                            FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                        fontStyle:
+                            FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                      ),
+                      letterSpacing: 0.0,
+                      fontWeight:
+                          FlutterFlowTheme.of(context).bodyMedium.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+                    ),
+              ),
+              Builder(
+                builder: (context) {
+                  if (FFAppState()
+                          .favorieteGemeenteIds
+                          .contains(FFAppState().gemeenteSelectId) ==
+                      true) {
+                    return FlutterFlowIconButton(
+                      borderRadius: 8.0,
+                      buttonSize: 40.0,
+                      fillColor: Color(0xFFB50808),
+                      icon: Icon(
+                        Icons.favorite,
+                        color: Colors.white,
+                        size: 24.0,
+                      ),
+                      onPressed: () async {
+                        await actions.drupalRequest(
+                          'POST',
+                          'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
+                          FFAppState().userSessionname,
+                          FFAppState().userSessionid,
+                          FFAppState().userToken,
+                          '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                        );
+                        FFAppState().removeFromFavorieteGemeenteIds(
+                            FFAppState().gemeenteSelectId);
+                        safeSetState(() {});
+                      },
+                    );
+                  } else {
+                    return FlutterFlowIconButton(
+                      borderRadius: 8.0,
+                      buttonSize: 40.0,
+                      fillColor: Color(0xFFB50808),
+                      icon: Icon(
+                        Icons.favorite_border,
+                        color: Colors.white,
+                        size: 24.0,
+                      ),
+                      onPressed: () async {
+                        await actions.drupalRequest(
+                          'POST',
+                          'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
+                          FFAppState().userSessionname,
+                          FFAppState().userSessionid,
+                          FFAppState().userToken,
+                          '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                        );
+                        FFAppState().addToFavorieteGemeenteIds(
+                            FFAppState().gemeenteSelectId);
+                        safeSetState(() {});
+                      },
+                    );
+                  }
+                },
+              ),
+            ],
+          ),
+          FFButtonWidget(
+            onPressed: () async {
+              context.pushNamed(HomeWidget.routeName);
+            },
+            text: FFLocalizations.of(context).getText(
+              'zb8hr9df' /* Toepassen */,
+            ),
+            options: FFButtonOptions(
+              height: 40.0,
+              padding: EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 0.0),
+              iconPadding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
+              color: FlutterFlowTheme.of(context).primary,
+              textStyle: FlutterFlowTheme.of(context).titleSmall.override(
+                    font: GoogleFonts.interTight(
+                      fontWeight:
+                          FlutterFlowTheme.of(context).titleSmall.fontWeight,
+                      fontStyle:
+                          FlutterFlowTheme.of(context).titleSmall.fontStyle,
+                    ),
+                    color: Colors.white,
+                    letterSpacing: 0.0,
+                    fontWeight:
+                        FlutterFlowTheme.of(context).titleSmall.fontWeight,
+                    fontStyle:
+                        FlutterFlowTheme.of(context).titleSmall.fontStyle,
+                  ),
+              elevation: 0.0,
+              borderRadius: BorderRadius.circular(8.0),
+            ),
+          ),
+          Builder(
+            builder: (context) {
+              final favorieteGemeenteItem =
+                  _model.favorieteGemeentenLijst.toList();
+              _model.debugGeneratorVariables[
+                      'favorieteGemeenteItem${favorieteGemeenteItem.length > 100 ? ' (first 100)' : ''}'] =
+                  debugSerializeParam(
+                favorieteGemeenteItem.take(100),
+                ParamType.DataStruct,
+                isList: true,
+                link:
+                    'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=SelectStateDropDownComponentCopy',
+                name: 'GemeenteModel',
+                nullable: false,
+              );
+              debugLogWidgetClass(_model);
+
+              return Wrap(
+                spacing: 0.0,
+                runSpacing: 0.0,
+                alignment: WrapAlignment.start,
+                crossAxisAlignment: WrapCrossAlignment.start,
+                direction: Axis.horizontal,
+                runAlignment: WrapAlignment.start,
+                verticalDirection: VerticalDirection.down,
+                clipBehavior: Clip.none,
+                children: List.generate(favorieteGemeenteItem.length,
+                    (favorieteGemeenteItemIndex) {
+                  final favorieteGemeenteItemItem =
+                      favorieteGemeenteItem[favorieteGemeenteItemIndex];
+                  return InkWell(
+                    splashColor: Colors.transparent,
+                    focusColor: Colors.transparent,
+                    hoverColor: Colors.transparent,
+                    highlightColor: Colors.transparent,
+                    onTap: () async {
+                      FFAppState().gemeenteSelectId =
+                          favorieteGemeenteItemItem.gemeenteid;
+                      FFAppState().gemeenteSelectNaam =
+                          favorieteGemeenteItemItem.gemeentename;
+                      safeSetState(() {});
+
+                      context.pushNamed(HomeWidget.routeName);
+                    },
+                    child: Container(
+                      decoration: BoxDecoration(
+                        color: FlutterFlowTheme.of(context).secondaryBackground,
+                      ),
+                      child: Text(
+                        favorieteGemeenteItemItem.gemeentename,
+                        style: FlutterFlowTheme.of(context).bodyMedium.override(
+                              font: GoogleFonts.inter(
+                                fontWeight: FlutterFlowTheme.of(context)
+                                    .bodyMedium
+                                    .fontWeight,
+                                fontStyle: FlutterFlowTheme.of(context)
+                                    .bodyMedium
+                                    .fontStyle,
+                              ),
+                              letterSpacing: 0.0,
+                              fontWeight: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontWeight,
+                              fontStyle: FlutterFlowTheme.of(context)
+                                  .bodyMedium
+                                  .fontStyle,
+                            ),
+                      ),
+                    ),
+                  );
+                }),
+              );
+            },
+          ),
+        ],
+      ),
+    );
+  }
+}