Преглед на файлове

SelectStateDropDownComponent: favoriet-hartje toegevoegd voor de huidige gemeente

Bob's eigen builder-werk (export 18:43), checkpoint-commit. Zelfde flag/unflag-patroon als
HeaderButtonsComponent (P1-26): ConditionalBuilder op favorieteGemeenteIds.contains(gemeenteSelectId),
POST naar favorieten/flag.json resp. unflag.json. flutter analyze: geen nieuwe errors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob преди 3 седмици
родител
ревизия
93aca29ca5

+ 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>"; };
-		6436409E27A31CD400820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409C27A31CDC00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409E27A31CD200820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409927A31CDF00820AF7 /* 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 = (
-				6436409E27A31CD400820AF7 /* nl */,
-				6436409C27A31CDC00820AF7 /* en */,
+				6436409E27A31CD200820AF7 /* nl */,
+				6436409927A31CDF00820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 1 - 0
lib/selecteer_plaats/select_state_drop_down_component/select_state_drop_down_component_model.dart

@@ -2,6 +2,7 @@ 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';

+ 57 - 0
lib/selecteer_plaats/select_state_drop_down_component/select_state_drop_down_component_widget.dart

@@ -2,6 +2,7 @@ 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';
@@ -321,6 +322,62 @@ class _SelectStateDropDownComponentWidgetState
               isSearchable: false,
               isMultiSelect: false,
             ),
+          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);