diff --git a/app/lib/widgets/main_layout.dart b/app/lib/widgets/main_layout.dart index 80e31e63337cced588f6c9a8923b70eb8ce0213c..6f4ce65701cf350ee1895b95b1bbd3bcf2fb3ab2 100644 --- a/app/lib/widgets/main_layout.dart +++ b/app/lib/widgets/main_layout.dart @@ -191,8 +191,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { ), child: const Text("Export JSON"), onPressed: () { - Navigator.of(context).pop(); - // Show progress indicator + // Close bottom sheet before displaying progress bar showProgressIndicator(context); }, @@ -294,6 +293,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { } } +// Saves all measurements to a file on the users mobile device Future<void> _exportIceData() async { final directory = await getExternalStorageDirectory(); final file = File('${directory?.path}/ice_data_$selectedLake.json'); @@ -306,7 +306,6 @@ Future<void> _exportIceData() async { } - // Display a progress indicator while JSON data is being downloaded void showProgressIndicator(BuildContext context) { BuildContext? dialogContext; @@ -333,9 +332,8 @@ void showProgressIndicator(BuildContext context) { ); // Ensure that the progress indicator runs for at lest 1 second - // before exporting the data - Future.delayed(const Duration(milliseconds: 1000), () { - try { + Future.delayed(const Duration(seconds: 1), () { + try { // Download JSON data _exportIceData(); ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Downloaded ice data as JSON')), @@ -349,6 +347,7 @@ void showProgressIndicator(BuildContext context) { // Add 2 second delay before closing the dialog Future.delayed(const Duration(seconds: 2), () { Navigator.of(dialogContext!).pop(); + Navigator.of(context).pop(); }); } }