Bladeren bron

Tabletlayout Selectprovinciegemeente + crashfix horeca-agenda

P2-28 (tabletcontrole): SelectStateDropDownComponent krijgt maxWidth 600 en
staat gecentreerd (Align 0,-1) i.p.v. drie 1280px brede velden op een tablet;
de favoriete-gemeente-chips krijgen spacing/runSpacing 8 zodat ze niet meer
aan elkaar plakken.

Auditbevinding: HorecagelegenheidEventTabelComponentCopy (de agenda op de
horeca-detailpagina) deed getJsonField(jsonBody, '$').toList() en crashte
daarmee bij een netwerkfout (jsonBody null). Nu via Predefined Path 'items'
($[:], Is List): HorecagelegenheidEventsCall.items(...)?.toList() ?? [].

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 3 uur geleden
bovenliggende
commit
bfeb0db283

+ 5 - 0
lib/backend/api_requests/api_calls.dart

@@ -832,6 +832,11 @@ class HorecagelegenheidEventsCall {
           .map((x) => castToType<String>(x))
           .withoutNulls
           .toList();
+  static List? items(dynamic response) => getJsonField(
+        response,
+        r'''$[:]''',
+        true,
+      ) as List?;
 }
 
 class GemeentenCall {

+ 4 - 4
lib/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/horecagelegenheid_event_tabel_component_copy_widget.dart

@@ -149,10 +149,10 @@ class _HorecagelegenheidEventTabelComponentCopyWidgetState
 
         return Builder(
           builder: (context) {
-            final evenementen = getJsonField(
-              gridViewHorecagelegenheidEventsResponse.jsonBody,
-              r'''$''',
-            ).toList();
+            final evenementen = HorecagelegenheidEventsCall.items(
+                  gridViewHorecagelegenheidEventsResponse.jsonBody,
+                )?.toList() ??
+                [];
             if (evenementen.isEmpty) {
               return GeenEvenementenComponentWidget();
             }

+ 5 - 2
lib/selecteer_plaats/select_state_drop_down_component/select_state_drop_down_component_widget.dart

@@ -185,6 +185,9 @@ class _SelectStateDropDownComponentWidgetState
     context.watch<FFAppState>();
 
     return Container(
+      constraints: BoxConstraints(
+        maxWidth: 600.0,
+      ),
       decoration: BoxDecoration(
         color: FlutterFlowTheme.of(context).secondaryBackground,
       ),
@@ -494,8 +497,8 @@ class _SelectStateDropDownComponentWidgetState
               debugLogWidgetClass(_model);
 
               return Wrap(
-                spacing: 0.0,
-                runSpacing: 0.0,
+                spacing: 8.0,
+                runSpacing: 8.0,
                 alignment: WrapAlignment.start,
                 crossAxisAlignment: WrapCrossAlignment.start,
                 direction: Axis.horizontal,

+ 12 - 9
lib/selecteer_plaats/selectprovinciegemeente/selectprovinciegemeente_widget.dart

@@ -201,15 +201,18 @@ class _SelectprovinciegemeenteWidgetState
                 ),
               ),
               if (true)
-                wrapWithModel(
-                  model: _model.selectStateDropDownComponentModel,
-                  updateCallback: () => safeSetState(() {}),
-                  child: Builder(builder: (_) {
-                    return DebugFlutterFlowModelContext(
-                      rootModel: _model.rootModel,
-                      child: SelectStateDropDownComponentWidget(),
-                    );
-                  }),
+                Align(
+                  alignment: AlignmentDirectional(0.0, -1.0),
+                  child: wrapWithModel(
+                    model: _model.selectStateDropDownComponentModel,
+                    updateCallback: () => safeSetState(() {}),
+                    child: Builder(builder: (_) {
+                      return DebugFlutterFlowModelContext(
+                        rootModel: _model.rootModel,
+                        child: SelectStateDropDownComponentWidget(),
+                      );
+                    }),
+                  ),
                 ),
             ],
           ),