Commit 57c41b4

derdilla <derdilla06@gmail.com>
2023-06-22 14:33:08
more expandable structure for DataExporter class
1 parent ba5672e
Changed files (2)
lib
lib/model/export_import.dart
@@ -28,6 +28,21 @@ class DataExporter {
     }
   }
 
+  List<BloodPressureRecord>? parseFile(Uint8List data) {
+    switch(settings.exportFormat) {
+      case ExportFormat.csv:
+        try {
+          return parseCSVFile(data);
+        } catch (e) {
+          return null;
+        }
+      case ExportFormat.pdf:
+        return null;
+      case ExportFormat.db:
+        throw UnimplementedError('TODO');
+    }
+  }
+
   Uint8List createCSVCFile(List<BloodPressureRecord> records) {
     List<String> exportItems;
     if (settings.exportCustomEntries) {
lib/screens/subsettings/export_import_screen.dart
@@ -274,17 +274,17 @@ class _ExportImportScreenState extends State<ExportImportScreen> {
                       return;
                     }
 
-                    try {
-                      var fileContents = DataExporter(settings).parseCSVFile(binaryContent);
-                      ScaffoldMessenger.of(context).showSnackBar(SnackBar(
-                          content: Text(AppLocalizations.of(context)!.importSuccess(fileContents.length))));
-                      var model = Provider.of<BloodPressureModel>(context, listen: false);
-                      for (final e in fileContents) {
-                        model.add(e);
-                      }
-                    } catch (e) {
+                    var fileContents = DataExporter(settings).parseFile(binaryContent);
+                    if (fileContents == null) {
                       ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                           content: Text(AppLocalizations.of(context)!.errNotImportable)));
+                      return;
+                    }
+                    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
+                        content: Text(AppLocalizations.of(context)!.importSuccess(fileContents.length))));
+                    var model = Provider.of<BloodPressureModel>(context, listen: false);
+                    for (final e in fileContents) {
+                      model.add(e);
                     }
                   },
                 )