Commit a038eb8
Changed files (4)
lib
lib/l10n/app_de.arb
@@ -36,6 +36,7 @@
"errNotEnoughDataToGraph": "Zuwenig Daten für Graphen",
"errNoData": "Keine Daten",
"errNoRangeForExport": "Sie müssen angeben, welche daten sie exportieren wollen.",
+ "errPleaseSelect": "Bitte auswählen",
"btnCancel": "ABBRUCH",
"btnSave": "OK",
lib/l10n/app_en.arb
@@ -36,6 +36,7 @@
"errNotEnoughDataToGraph": "not enough data to draw graph",
"errNoData": "no data",
"errNoRangeForExport": "You need to specify a range in which data is exported.",
+ "errPleaseSelect": "please select",
"btnCancel": "CANCEL",
"btnSave": "SAVE",
lib/model/settings_store.dart
@@ -10,10 +10,6 @@ class Settings extends ChangeNotifier {
DateTime? _displayDataStart;
DateTime? _displayDataEnd;
-
- DateTimeRange? _exportDataRange;
- List<String> _exportItems = ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes'];
- List<String> _exportAddableItems = [];
Settings._create();
// factory method, to allow for async constructor
@@ -351,29 +347,32 @@ class Settings extends ChangeNotifier {
notifyListeners();
}
- DateTimeRange? get exportDataRange {
- return _exportDataRange;
+ DateTimeRange get exportDataRange {
+ final start = DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('exportDataRangeStartEpochMs') ?? 0);
+ final end = DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('exportDataRangeEndEpochMs') ?? 0);
+ return DateTimeRange(start: start, end: end);
}
- set exportDataRange(DateTimeRange? value) {
- _exportDataRange = value;
+ set exportDataRange(DateTimeRange value) {
+ _prefs.setInt('exportDataRangeStartEpochMs', value.start.millisecondsSinceEpoch);
+ _prefs.setInt('exportDataRangeEndEpochMs', value.end.millisecondsSinceEpoch);
notifyListeners();
}
List<String> get exportAddableItems {
- return _exportAddableItems;
+ return _prefs.getStringList('exportAddableItems') ?? [];
}
set exportAddableItems(List<String> value) {
- _exportAddableItems = value;
+ _prefs.setStringList('exportAddableItems', value);
notifyListeners();
}
List<String> get exportItems {
- return _exportItems;
+ return _prefs.getStringList('exportItems') ?? ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes'];
}
set exportItems(List<String> value) {
- _exportItems = value;
+ _prefs.setStringList('exportItems', value);
notifyListeners();
}
lib/screens/subsettings/export_import_screen.dart
@@ -24,10 +24,12 @@ class ExportImportScreen extends StatelessWidget {
),
body: Consumer<Settings>(builder: (context, settings, child) {
var exportRange = settings.exportDataRange;
- String? exportRangeText;
- if (exportRange != null) {
+ String exportRangeText;
+ if (exportRange.start.millisecondsSinceEpoch != 0 && exportRange.end.millisecondsSinceEpoch != 0) {
var formatter = DateFormat.yMMMd(AppLocalizations.of(context)!.localeName);
exportRangeText = '${formatter.format(exportRange.start)} - ${formatter.format(exportRange.end)}';
+ } else {
+ exportRangeText = AppLocalizations.of(context)!.errPleaseSelect;
}
List<Widget> modeSpecificSettings = [];
@@ -53,7 +55,7 @@ class ExportImportScreen extends StatelessWidget {
}
},
),
- CsvItemsOrderCreator()
+ const CsvItemsOrderCreator()
];
}
@@ -67,7 +69,7 @@ class ExportImportScreen extends StatelessWidget {
),
(settings.exportLimitDataRange) ? SettingsTile(
title: Text(AppLocalizations.of(context)!.exportInterval),
- description: (exportRangeText != null) ? Text(exportRangeText) : null,
+ description: Text(exportRangeText),
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);
@@ -76,7 +78,7 @@ class ExportImportScreen extends StatelessWidget {
.showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.errNoRangeForExport)));
return;
}
- settings.exportDataRange = newRange;
+ settings.exportDataRange = newRange ?? DateTimeRange(start: DateTime.fromMillisecondsSinceEpoch(0), end: DateTime.fromMillisecondsSinceEpoch(0));
}
) : const SizedBox.shrink(),
@@ -132,13 +134,13 @@ class ExportImportScreen extends StatelessWidget {
onPressed: () async {
var settings = Provider.of<Settings>(context, listen: false);
var range = settings.exportDataRange;
- if (range == null) {
+ if (range.start.millisecondsSinceEpoch == 0 || range.end.millisecondsSinceEpoch == 0) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.errNoRangeForExport)));
return;
}
- var entries = await Provider.of<BloodPressureModel>(context, listen: false).getInTimeRange(settings.exportDataRange!.start, settings.exportDataRange!.end);
+ var entries = await Provider.of<BloodPressureModel>(context, listen: false).getInTimeRange(settings.exportDataRange.start, settings.exportDataRange.end);
var fileContents = DataExporter(settings).createFile(entries);
String filename = 'blood_press_${DateTime.now().toIso8601String()}';