diff --git a/lib/filemanager.dart b/lib/filemanager.dart index fd8b714..28472af 100644 --- a/lib/filemanager.dart +++ b/lib/filemanager.dart @@ -21,6 +21,7 @@ class FileManager { static String archivedLast = ''; static bool fileImported = false; + static bool fileImportPending = false; static bool multipleFiles = false; static bool allowWatcher = false; final bool allowMultipleFiles = (Platform.isAndroid); @@ -60,6 +61,7 @@ class FileManager { Future selectFile(BuildContext context, [Map fileSelection = const {}]) async { + FileManager.fileImportPending = true; Map result = {'files': {}}; String cacheDir = await FileManager().filePickerPath(); @@ -100,7 +102,10 @@ class FileManager { result = fileSelection; } - if (result.containsKey('files') && result['files'].length == 0) return; + if (result.containsKey('files') && result['files'].length == 0) { + FileManager.fileImportPending = false; + return; + } await Network().internalIP(); if (Network.interfaceList.isEmpty) { @@ -207,5 +212,6 @@ class FileManager { // Initiate server await Network().fetchInterfaces(context); } + FileManager.fileImportPending = false; } } diff --git a/lib/main.dart b/lib/main.dart index 77d042f..2bb3128 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -120,13 +120,20 @@ class _Page extends State with WidgetsBindingObserver { index++; } - await FileManager().selectFile(context, fileSelection).whenComplete(() { - // Update state - setState(() { - _actionButtonLoading = false; - _stateView = StateManagerPage(); + try { + await FileManager().selectFile(context, fileSelection).whenComplete(() { + setState(() { + _actionButtonLoading = false; + _stateView = StateManagerPage(); + }); }); - }); + } catch (error) { + showToast(AppLocalizations.of(context)! + .info_exception_fileselection_fallback + + error.toString()); + } finally { + FileManager.fileImportPending = false; + } } if (!StateManager().isDesktop) { @@ -265,6 +272,8 @@ class _Page extends State with WidgetsBindingObserver { showToast( AppLocalizations.of(context)!.info_exception_fileselection_fallback + error.toString()); + } finally { + FileManager.fileImportPending = false; } } diff --git a/lib/statemanager.dart b/lib/statemanager.dart index 25a2a78..7f6797f 100644 --- a/lib/statemanager.dart +++ b/lib/statemanager.dart @@ -52,7 +52,9 @@ class StateManager extends State { @override Widget build(BuildContext context) { Widget _outputState; - if (pageTypeCurrent == PageType.imported) { + if (FileManager.fileImportPending) { + _outputState = loadingPage(); + } else if (pageTypeCurrent == PageType.imported) { _outputState = importedPage(context); } else { _outputState = msgPage(context);