Commit 52936a4

derdilla <derdilla06@gmail.com>
2023-06-18 08:35:55
add export range
1 parent 2db2fa9
Changed files (4)
lib/l10n/app_de.arb
@@ -35,6 +35,7 @@
   "errNoValue": "Bitte Wert eingeben",
   "errNotEnoughDataToGraph": "Zuwenig Daten für Graphen",
   "errNoData": "Keine Daten",
+  "errNoRangeForExport": "Sie müssen angeben, welche daten sie exportieren wollen.",
 
   "btnCancel": "ABBRUCH",
   "btnSave": "OK",
@@ -75,7 +76,9 @@
   "sysWarn": "Warnwert Sys",
   "diaWarn": "Warnwert Dia",
   "data": "Daten",
+
   "exportImport": "Exportieren / Importieren",
+  "exportInterval": "Datenbereich",
   "exportFormat": "Exportformat",
   "exportMimeType": "Export MIME typ",
   "csv": "CSV",
lib/l10n/app_en.arb
@@ -35,6 +35,7 @@
   "errNoValue": "Please enter a value",
   "errNotEnoughDataToGraph": "not enough data to draw graph",
   "errNoData": "no data",
+  "errNoRangeForExport": "You need to specify a range in which data is exported.",
 
   "btnCancel": "CANCEL",
   "btnSave": "SAVE",
@@ -75,7 +76,9 @@
   "sysWarn": "systolic warn",
   "diaWarn": "diastolic warn",
   "data": "data",
+
   "exportImport": "export / import",
+  "exportInterval": "data range",
   "exportFormat": "export format",
   "exportMimeType": "export MIME type",
   "exportMimeTypeDesc": "signalizes type to other apps",
lib/model/settings_store.dart
@@ -11,6 +11,8 @@ class Settings extends ChangeNotifier {
   DateTime? _displayDataStart;
   DateTime? _displayDataEnd;
 
+  DateTimeRange? _exportDataRange;
+
   Settings._create();
   // factory method, to allow for async constructor
   static Future<Settings> create() async {
@@ -334,7 +336,15 @@ class Settings extends ChangeNotifier {
     notifyListeners();
   }
 
+  DateTimeRange? get exportDataRange {
+    return _exportDataRange;
+  }
 
+  set exportDataRange(DateTimeRange? value) {
+    _exportDataRange = value;
+    notifyListeners();
+  }
+  
 
 }
 
lib/screens/subsettings/export_import_screen.dart
@@ -5,6 +5,7 @@ import 'package:blood_pressure_app/model/export_import.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:intl/intl.dart';
 import 'package:provider/provider.dart';
 
 class ExportImportScreen extends StatelessWidget {
@@ -18,6 +19,13 @@ class ExportImportScreen extends StatelessWidget {
         backgroundColor: Theme.of(context).primaryColor,
       ),
       body: Consumer<Settings>(builder: (context, settings, child) {
+        var exportRange = settings.exportDataRange;
+        String? exportRangeText;
+        if (exportRange != null) {
+          var formatter = DateFormat.yMMMd(AppLocalizations.of(context)!.localeName);
+          exportRangeText = '${formatter.format(exportRange.start)} - ${formatter.format(exportRange.end)}';
+        }
+
         List<Widget> modeSpecificSettings = [];
         if (settings.exportFormat == ExportFormat.csv) {
           modeSpecificSettings = [
@@ -45,6 +53,21 @@ class ExportImportScreen extends StatelessWidget {
         }
 
         List<Widget> options = [
+          SettingsTile(
+            title: Text(AppLocalizations.of(context)!.exportInterval),
+            description: (exportRangeText != null) ? Text(exportRangeText) : null,
+            onPressed: (context) async {
+              var model = Provider.of<BloodPressureModel>(context, listen: false);
+              var newRange = await showDateRangePicker(context: context, firstDate: await model.firstDay, lastDate: await model.lastDay);
+              if (newRange == null && context.mounted) {
+                ScaffoldMessenger.of(context)
+                    .showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.errNoRangeForExport)));
+                return;
+              }
+              settings.exportDataRange = newRange;
+
+            }
+          ),
           DropDownSettingsTile<ExportFormat>(
             key: const Key('exportFormat'),
             title: Text(AppLocalizations.of(context)!.exportFormat),