Commit 7017833

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-12-25 14:31:39
remove context reliance in measurement list
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 2a93d69
Changed files (2)
lib
components
measurement_list
screens
lib/components/measurement_list/measurement_list.dart
@@ -1,106 +1,73 @@
 import 'package:blood_pressure_app/components/measurement_list/measurement_list_entry.dart';
 import 'package:blood_pressure_app/model/blood_pressure.dart';
-import 'package:blood_pressure_app/model/storage/intervall_store.dart';
 import 'package:blood_pressure_app/model/storage/settings_store.dart';
-import 'package:blood_pressure_app/screens/blood_pressure_builder.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 
 class MeasurementList extends StatelessWidget {
-  const MeasurementList({super.key, required this.settings});
-
-  final Settings settings;
-
-  @override
-  Widget build(BuildContext context) {
-    return Column(
-        mainAxisSize: MainAxisSize.min,
-        children: [
-          MeasurementListHeader(settings: settings,),
-          Expanded(
-              child: BloodPressureBuilder(
-                rangeType: IntervallStoreManagerLocation.mainPage,
-                onData: (context, data) {
-                  return MeasurementListEntries(
-                    entries: data,
-                    settings: settings,
-                  );
-                },
-              )
-          )
-        ]
-    );
-  }
-}
-
-
-class MeasurementListEntries extends StatelessWidget {
-  const MeasurementListEntries({super.key, required this.entries, required this.settings});
-
-  final List<BloodPressureRecord> entries;
-
-  final Settings settings;
-
-  @override
-  Widget build(BuildContext context) {
-    return ListView.builder(
-      // Fix actions blocked by floating buttons on different screens and font sizes
-      padding: const EdgeInsets.only(bottom: 300),
-      itemCount: entries.length,
-      itemBuilder: (context, idx) {
-        return MeasurementListRow(
-          record: entries[idx],
-          settings: settings,
-        );
-      },
-    );
-  }
-}
-
-class MeasurementListHeader extends StatelessWidget {
-  const MeasurementListHeader({super.key, required this.settings});
+  const MeasurementList({super.key, required this.settings, required this.records});
 
   final Settings settings;
+  final List<BloodPressureRecord> records;
 
   @override
   Widget build(BuildContext context) {
     final localizations = AppLocalizations.of(context)!;
     return Column(
-        children: [
-          Row(
-            children: [
-              const Expanded(
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        Column(
+          children: [
+            Row(
+              children: [
+                const Expanded(
                   flex: 4,
                   child: SizedBox()),
-              Expanded(
-                  flex: 30,
-                  child: Text(localizations.sysLong,
-                      overflow: TextOverflow.ellipsis,
-                      style: TextStyle(fontWeight: FontWeight.bold, color: settings.sysColor))),
-              Expanded(
-                  flex: 30,
-                  child: Text(localizations.diaLong,
-                      overflow: TextOverflow.ellipsis,
-                      style: TextStyle(fontWeight: FontWeight.bold, color: settings.diaColor))),
-              Expanded(
-                  flex: 30,
-                  child: Text(localizations.pulLong,
-                      overflow: TextOverflow.ellipsis,
-                      style: TextStyle(fontWeight: FontWeight.bold, color: settings.pulColor))),
-              const Expanded(
-                  flex: 20,
-                  child: SizedBox()),
-            ],
-          ),
-          const SizedBox(
-            height: 10,
+                Expanded(
+                    flex: 30,
+                    child: Text(localizations.sysLong,
+                        overflow: TextOverflow.ellipsis,
+                        style: TextStyle(fontWeight: FontWeight.bold, color: settings.sysColor))),
+                Expanded(
+                    flex: 30,
+                    child: Text(localizations.diaLong,
+                        overflow: TextOverflow.ellipsis,
+                        style: TextStyle(fontWeight: FontWeight.bold, color: settings.diaColor))),
+                Expanded(
+                    flex: 30,
+                    child: Text(localizations.pulLong,
+                        overflow: TextOverflow.ellipsis,
+                        style: TextStyle(fontWeight: FontWeight.bold, color: settings.pulColor))),
+                const Expanded(
+                    flex: 20,
+                    child: SizedBox()),
+              ],
+            ),
+            const SizedBox(
+              height: 10,
+            ),
+            Divider(
+              height: 0,
+              thickness: 2,
+              color: Theme.of(context).colorScheme.primaryContainer,
+            )
+          ]
+        ),
+        Expanded(
+          child: ListView.builder(
+            // Fix actions blocked by floating buttons on different screens
+            // and font sizes by adding empty offset to bottom.
+            padding: const EdgeInsets.only(bottom: 300),
+            itemCount: records.length,
+            itemBuilder: (context, idx) {
+              return MeasurementListRow(
+                record: records[idx],
+                settings: settings,
+              );
+            },
           ),
-          Divider(
-            height: 0,
-            thickness: 2,
-            color: Theme.of(context).colorScheme.primaryContainer,
-          )
-        ]);
+        )
+      ]
+    );
   }
-
 }
\ No newline at end of file
lib/screens/home_screen.dart
@@ -1,6 +1,8 @@
 import 'package:blood_pressure_app/components/dialoges/add_measurement.dart';
 import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/storage/intervall_store.dart';
 import 'package:blood_pressure_app/model/storage/settings_store.dart';
+import 'package:blood_pressure_app/screens/blood_pressure_builder.dart';
 import 'package:blood_pressure_app/screens/legacy_measurement_list.dart';
 import 'package:blood_pressure_app/screens/measurement_graph.dart';
 import 'package:blood_pressure_app/screens/settings_screen.dart';
@@ -58,7 +60,13 @@ class AppHome extends StatelessWidget {
                   Expanded(
                     child: (settings.useLegacyList) ?
                       LegacyMeasurementsList(context) :
-                      MeasurementList(settings: settings,)
+                      BloodPressureBuilder(
+                        rangeType: IntervallStoreManagerLocation.mainPage,
+                        onData: (context, records) => MeasurementList(
+                          settings: settings,
+                          records: records,
+                        )
+                      )
                   )
                 ]);
               }