Commit 080f16d
Changed files (3)
lib
lib/model/export_options.dart
@@ -1,5 +1,6 @@
import 'dart:collection';
+import 'package:blood_pressure_app/main.dart';
import 'package:blood_pressure_app/model/blood_pressure.dart';
import 'package:blood_pressure_app/model/export_import.dart';
import 'package:blood_pressure_app/model/settings_store.dart';
@@ -282,9 +283,23 @@ class ExportColumn {
}
enum RowDataFieldType {
- timestamp,
- sys,
- dia,
- pul,
- notes
+ timestamp, sys, dia, pul, notes;
+
+ @override
+ String toString() {
+ switch(index) {
+ case 0:
+ return gLocalizations.timestamp;
+ case 1:
+ return gLocalizations.sysLong;
+ case 2:
+ return gLocalizations.diaLong;
+ case 3:
+ return gLocalizations.pulLong;
+ case 4:
+ return gLocalizations.notes;
+ default:
+ return "unknown";
+ };
+ }
}
\ No newline at end of file
lib/screens/subsettings/export_import_screen.dart
@@ -214,7 +214,8 @@ class _ExportFieldCustomisationSettingState
: settings.exportItemsPdf;
final formats = configurationModel.availableFormats.toSet();
- List<ExportColumn> activeFields = configurationModel.getActiveExportColumns(settings.exportFormat);
+ List<ExportColumn> activeFields = configurationModel
+ .getActiveExportColumns(settings.exportFormat);
List<ExportColumn> hiddenFields = [];
for (final internalName in exportItems) {
formats.removeWhere((e) => e.internalName == internalName);
@@ -327,51 +328,50 @@ class _ExportWarnBannerState extends State<ExportWarnBanner> {
@override
Widget build(BuildContext context) {
final localizations = AppLocalizations.of(context)!;
- _future = ExportConfigurationModel.get(Provider.of<Settings>(context, listen: false), localizations);
+ _future = ExportConfigurationModel.get(
+ Provider.of<Settings>(context, listen: false), localizations);
return Consumer<Settings>(builder: (context, settings, child) {
+ _showWarnBanner = true; // when settings change, warn banner should reset as well
return ConsistentFutureBuilder(
future: _future,
onData: (context, configurationModel) {
String? message;
- final exportItems = (settings.exportFormat == ExportFormat.csv)
- ? settings.exportItemsCsv
- : settings.exportItemsPdf;
final exportCustomEntries =
(settings.exportFormat == ExportFormat.csv)
? settings.exportCustomEntriesCsv
: settings.exportCustomEntriesPdf;
- final exportFormats = configurationModel.getActiveExportColumns(settings.exportFormat)
+ final exportFormats = configurationModel
+ .getActiveExportColumns(settings.exportFormat)
.map((e) => e.parsableFormat);
+ print(exportFormats.join(','));
+ var missingAttributes = {
+ RowDataFieldType.timestamp,
+ RowDataFieldType.sys,
+ RowDataFieldType.dia,
+ RowDataFieldType.pul,
+ RowDataFieldType.notes
+ };
+ missingAttributes.removeWhere((e) => exportFormats.contains(e));
+ print(missingAttributes);
if (_showWarnBanner &&
![ExportFormat.csv, ExportFormat.db]
.contains(settings.exportFormat) ||
settings.exportCsvHeadline == false ||
- exportCustomEntries && exportFormats.where((e) => e == RowDataFieldType.timestamp).isEmpty ||
+ exportCustomEntries &&
+ missingAttributes.contains(RowDataFieldType.timestamp) ||
![',', '|'].contains(settings.csvFieldDelimiter) ||
!['"', '\''].contains(settings.csvTextDelimiter)) {
- print(exportFormats.join(','));
message = localizations.exportWarnConfigNotImportable;
- } else if (_showWarnBanner &&
- exportCustomEntries &&
- !([RowDataFieldType.sys, RowDataFieldType.dia, RowDataFieldType.pul, RowDataFieldType.notes]
- .every((i) => exportFormats.contains(i)))) {
- var missingAttributes = {
- 'systolic',
- 'diastolic',
- 'pulse',
- 'notes'
- };
- missingAttributes.removeWhere((e) => exportItems.contains(e));
-
+ } else if (_showWarnBanner && exportCustomEntries && missingAttributes.isNotEmpty) {
message = localizations.exportWarnNotEveryFieldExported(
- missingAttributes.length, missingAttributes.toString());
+ missingAttributes.length, missingAttributes.join(', '));
}
if (message != null) {
return MaterialBanner(
padding: const EdgeInsets.all(20),
- content: Text(message!),
+ content: Text(message),
actions: [
TextButton(
onPressed: () {
lib/main.dart
@@ -6,6 +6,8 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
+late AppLocalizations gLocalizations;
+
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 2 different db files
@@ -32,7 +34,10 @@ class AppRoot extends StatelessWidget {
return MaterialApp(
title: 'Blood Pressure App',
- onGenerateTitle: (context) => AppLocalizations.of(context)!.title,
+ onGenerateTitle: (context) {
+ gLocalizations = AppLocalizations.of(context)!;
+ return gLocalizations.title;
+ },
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: settings.accentColor,