diff --git a/app/lib/utils/export_data.dart b/app/lib/utils/export_data.dart index f97a2e1cdff1123341fd69cede18eae649dde357..f7a124b4d2bf0fa50dd5d134883b7de4288bec1c 100644 --- a/app/lib/utils/export_data.dart +++ b/app/lib/utils/export_data.dart @@ -11,11 +11,14 @@ Future<void> _exportIceData() async { final directory = await getExternalStorageDirectory(); final file = File('${directory?.path}/ice_data_$selectedLake.json'); - // Convert JSON data to string - final jsonString = jsonEncode(selectedMeasurements); + List<Map<String, dynamic>> measurementsJSON = []; + // Convert every measurement to JSON + for (var element in selectedMeasurements) { + measurementsJSON.add(element.toJson()); + } // Write JSON data to file - await file.writeAsString(jsonString); + await file.writeAsString(measurementsJSON.toString()); } diff --git a/app/lib/widgets/main_layout.dart b/app/lib/widgets/main_layout.dart index 531469c4e272066918a9b0688a1e90e898740211..4b088ce2df066af3543337178e7d56a0492f744e 100644 --- a/app/lib/widgets/main_layout.dart +++ b/app/lib/widgets/main_layout.dart @@ -198,21 +198,41 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { style: const TextStyle(fontSize: 20), ), const SizedBox(height: contPadding), - ElevatedButton( - style: ButtonStyle( - backgroundColor: MaterialStateProperty.all<Color>(Colors.white24), - ), - child: const Text("Export JSON"), - onPressed: () { // Export all measurements as JSON - List<Map<String, dynamic>> measurementsJSON = []; - // Convert every measurement to JSON - for (var element in selectedMeasurements) { - measurementsJSON.add(element.toJson()); - } - // Export the processed data - Share.share(selectedMeasurements.toString()); - }, - ) + Column( + children: [ + ElevatedButton( + style: ButtonStyle( + backgroundColor: + MaterialStateProperty.all<Color>(Colors.white24), + fixedSize: MaterialStateProperty.all<Size>( + const Size(200.0, 40.0), + ), + ), + child: const Text("Download as JSON"), + onPressed: () { // Download all measurements as JSON + showProgressIndicator(context); + }, + ), + ElevatedButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all<Color>(Colors.white24), + fixedSize: MaterialStateProperty.all<Size>( + const Size(200.0, 40.0), + ), + ), + child: const Text("Share as JSON"), + onPressed: () { // Export all measurements as JSON + List<Map<String, dynamic>> measurementsJSON = []; + // Convert every measurement to JSON + for (var element in selectedMeasurements) { + measurementsJSON.add(element.toJson()); + } + // Export the processed data + Share.share(measurementsJSON.toString()); + }, + ), + ], + ), ], ), ), @@ -276,7 +296,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { ), ], ), - const SizedBox(height: contPadding), // Padding between containers + const SizedBox(height: contPadding*1.7), // Padding between containers Column( // Ice stats container crossAxisAlignment: CrossAxisAlignment.start, children: [