Commit 94cc87f

derdilla <derdilla06@gmail.com>
2023-09-03 12:32:17
implement list header
1 parent 550e154
Changed files (3)
lib
lib/components/measurement_list/measurement_list.dart
@@ -1,6 +1,9 @@
 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/settings_store.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+import 'package:provider/provider.dart';
 
 class MeasurementList extends StatelessWidget {
   final List<BloodPressureRecord> entries;
@@ -10,23 +13,61 @@ class MeasurementList extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return ListView.builder(
-      itemCount: entries.length + 2,
-      //separatorBuilder: (context, idx) => const Divider(),
+      // Fix actions blocked by floating buttons on different screens and font sizes
+      padding: const EdgeInsets.only(bottom: 300),
+      itemCount: entries.length,
       itemBuilder: (context, idx) {
-        if (idx == 0) { // first row
-          // TODO
-          return Text("TODO");
-        }
-        if (idx > entries.length) { // last row
-          // Fix actions blocked by floating buttons
-          // This way of doing it seems to be the most common: https://stackoverflow.com/q/29362284
-          return const SizedBox(height: 300,);
-        }
         return MeasurementListRow(
-            record: entries[idx-1]
+          record: entries[idx]
         );
       },
     );
   }
+}
+
+class ModernListHeader extends StatelessWidget {
+  const ModernListHeader({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    final localizations = AppLocalizations.of(context)!;
+    return Consumer<Settings>(
+        builder: (context, settings, child) {
+          return Column(
+              children: [
+                Row(
+                  children: [
+                    const Expanded(
+                        flex: 4,
+                        child: SizedBox()),
+                    Expanded(
+                        flex: 30,
+                        child: Text(localizations.sysLong,
+                            style: TextStyle(fontWeight: FontWeight.bold, color: settings.sysColor))),
+                    Expanded(
+                        flex: 30,
+                        child: Text(localizations.diaLong,
+                            style: TextStyle(fontWeight: FontWeight.bold, color: settings.diaColor))),
+                    Expanded(
+                        flex: 30,
+                        child: Text(localizations.pulLong,
+                            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,
+                )
+              ]);
+        }
+    );
+  }
 
 }
\ No newline at end of file
lib/components/measurement_list/measurement_list_entry.dart
@@ -21,7 +21,7 @@ class MeasurementListRow extends StatelessWidget {
         return ExpansionTile(
           // Leading color possible
           title: buildRow(formatter),
-          childrenPadding: EdgeInsets.only(bottom: 10),
+          childrenPadding: const EdgeInsets.only(bottom: 10),
           children: [
             Row(
               children: [
lib/screens/home.dart
@@ -49,6 +49,7 @@ class AppHome extends StatelessWidget {
             padding: padding,
             child: Column(children: [
               const MeasurementGraph(),
+              ModernListHeader(),
               Expanded(
                 flex: 50,
                 child: Consumer<BloodPressureModel>(
@@ -59,7 +60,7 @@ class AppHome extends StatelessWidget {
                             future: model.getInTimeRange(settings.displayDataStart, settings.displayDataEnd),
                             onData: (context, data) {
                               return MeasurementList(
-                                  entries: data
+                                entries: data
                               );
                             }
                         );