Commit ea253ea

derdilla <derdilla06@gmail.com>
2023-06-20 16:32:37
rewrite import
1 parent e8d3a52
Changed files (3)
lib/l10n/app_en.arb
@@ -110,6 +110,14 @@
   "import": "IMPORT",
   "sourceCode": "source code",
   "licenses": "3rd party licenses",
+  "importSuccess": "Successfully imported {count} entries",
+  "@importSuccess": {
+    "placeholders": {
+      "count": {
+        "type": "int"
+      }
+    }
+  },
 
   "statistics": "Statistics",
   "measurementCount": "Measurement count",
lib/model/export_import.dart
@@ -74,9 +74,6 @@ class DataExporter {
     String fileContents = utf8.decode(data.toList());
     final converter = CsvToListConverter(fieldDelimiter: settings.csvFieldDelimiter, textDelimiter: settings.csvTextDelimiter);
     final csvLines = converter.convert(fileContents);
-    if (csvLines.length <= 1) {
-      throw const FormatException('empty file');
-    }
     final attributes = csvLines.removeAt(0);
     var creationTimePos = -1;
     var sysPos = -1;
@@ -119,9 +116,6 @@ class DataExporter {
           )
       );
     }
-    // TODO: maybe use customized fields if no header is present?
-    // requires changes in screen class
-
     return records;
   }
 }
lib/screens/subsettings/export_import_screen.dart
@@ -206,13 +206,11 @@ class ExportImportScreen extends StatelessWidget {
                           content: Text(AppLocalizations.of(context)!.errNeedHeadline)));
                     }
 
-                    // TODO: import from here
-
-
                     var result = await FilePicker.platform.pickFiles(
                       allowMultiple: false,
                       withData: true,
                     );
+                    if (!context.mounted) return;
                     if (result == null) {
                       ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                           content: Text(AppLocalizations.of(context)!.errNoFileOpened)));
@@ -224,7 +222,15 @@ class ExportImportScreen extends StatelessWidget {
                           content: Text(AppLocalizations.of(context)!.errCantReadFile)));
                       return;
                     }
-                    DataExporter(settings).parseCSVFile(binaryContent);
+                    
+                    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);
+                    }
+
                   },
                 )
               ),