Commit 46c26ff

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-11-11 07:55:25
make all entries through new dialoge
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 5931bbf
Changed files (4)
lib/components/dialoges/add_measurement.dart
@@ -217,7 +217,7 @@ class _AddMeasurementDialogeState extends State<AddMeasurementDialoge> {
                 initialValue: widget.initialRecord?.notes,
                 decoration: getInputDecoration(localizations.addNote),
                 minLines: 1,
-                maxLines: 4,
+                //maxLines: 4, There is a bug in the flutter framework: https://github.com/flutter/flutter/issues/138219
                 onSaved: (value) => setState(() => notes = value),
               ),
             ),
lib/components/measurement_list/measurement_list_entry.dart
@@ -1,6 +1,6 @@
+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/storage.dart';
-import 'package:blood_pressure_app/screens/add_measurement.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:intl/intl.dart';
@@ -31,7 +31,13 @@ class MeasurementListRow extends StatelessWidget {
                 mainAxisSize: MainAxisSize.min,
                 children: [
                   IconButton(
-                    onPressed: () => _editEntry(context),
+                    onPressed: () async {
+                      final future = showAddMeasurementDialoge(context, settings, record);
+                      final model = Provider.of<BloodPressureModel>(context, listen: false);
+                      final measurement = await future;
+                      if (measurement == null) return;
+                      model.add(measurement);
+                    },
                     icon: const Icon(Icons.edit),
                     tooltip: localizations.edit,
                   ),
@@ -110,8 +116,4 @@ class MeasurementListRow extends StatelessWidget {
       ));
     }
   }
-
-  void _editEntry(BuildContext context) async {
-    Navigator.push(context, MaterialPageRoute(builder: (context) => AddMeasurementPage.edit(record)));
-  }
 }
lib/screens/add_measurement.dart
@@ -12,6 +12,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:intl/intl.dart';
 import 'package:provider/provider.dart';
 
+@Deprecated("use dialoge instead")
 class AddMeasurementPage extends StatefulWidget {
   final DateTime? initTime;
   final int? initSys;
lib/screens/home.dart
@@ -1,8 +1,8 @@
 import 'package:blood_pressure_app/components/dialoges/add_measurement.dart';
 import 'package:blood_pressure_app/components/legacy_measurement_list.dart';
 import 'package:blood_pressure_app/components/measurement_graph.dart';
+import 'package:blood_pressure_app/model/blood_pressure.dart';
 import 'package:blood_pressure_app/model/storage/settings_store.dart';
-import 'package:blood_pressure_app/screens/add_measurement.dart';
 import 'package:blood_pressure_app/screens/settings.dart';
 import 'package:blood_pressure_app/screens/statistics.dart';
 import 'package:flutter/material.dart';
@@ -13,7 +13,9 @@ import 'package:provider/provider.dart';
 
 import '../components/measurement_list/measurement_list.dart';
 
-/// The only use of this variable is to avoid loading the AddMeasurementPage twice,
+/// Is true during the first [AppHome.build].
+///
+/// The only use of this variable is to avoid calling [showAddMeasurementDialoge] twice,
 /// when startWithAddMeasurementPage is active
 bool _appStart = true;
 
@@ -25,8 +27,12 @@ class AppHome extends StatelessWidget {
     final localizations = AppLocalizations.of(context)!;
     // direct use of settings possible as no listening is required
     if (_appStart && Provider.of<Settings>(context, listen: false).startWithAddMeasurementPage) {
-      SchedulerBinding.instance.addPostFrameCallback((_) {
-        Navigator.of(context).push(MaterialPageRoute(builder: (context) => const AddMeasurementPage()));
+      SchedulerBinding.instance.addPostFrameCallback((_) async {
+        final future = showAddMeasurementDialoge(context, Provider.of<Settings>(context, listen: false));
+        final model = Provider.of<BloodPressureModel>(context, listen: false);
+        final measurement = await future;
+        if (measurement == null) return;
+        model.add(measurement);
       });
     }
     _appStart = false;
@@ -78,9 +84,12 @@ class AppHome extends StatelessWidget {
                       tooltip: localizations.addMeasurement,
                       autofocus: true,
                       onPressed: () async {
-                        final value = await showAddMeasurementDialoge(context, settings);
-                        // TODO: save value
-                        // TODO: use new dialog when editing measurements
+                        final future = showAddMeasurementDialoge(context, settings);
+                        final model = Provider.of<BloodPressureModel>(context, listen: false);
+                        final measurement = await future;
+                        if (measurement == null) return;
+                        model.add(measurement);
+                        // TODO: call export after every entry
                       },
                       child: const Icon(Icons.add,),
                     ),