Parent
Part of #445
Severity
High
Problem
Non-dismissible DDL spinner is shown via showAppDialog(barrierDismissible: false), then if (!mounted) return without Navigator.pop. Navigating away mid-fetch leaves a blocking overlay (and Escape cannot dismiss — see dialog Escape issue).
Evidence
lib/features/extensions/extension_table_view.dart (~179–195)
lib/features/sqlite/sqlite_table_view.dart (~194–207)
- Check postgres/mysql table DDL paths for the same pattern
Acceptance
Suggested fix
Capture navigator before await; try/finally { if (navigator.canPop()) navigator.pop(); }.
Parent
Part of #445
Severity
High
Problem
Non-dismissible DDL spinner is shown via
showAppDialog(barrierDismissible: false), thenif (!mounted) returnwithoutNavigator.pop. Navigating away mid-fetch leaves a blocking overlay (and Escape cannot dismiss — see dialog Escape issue).Evidence
lib/features/extensions/extension_table_view.dart(~179–195)lib/features/sqlite/sqlite_table_view.dart(~194–207)Acceptance
finally(or equivalent), even if widget unmountedSuggested fix
Capture navigator before await;
try/finally { if (navigator.canPop()) navigator.pop(); }.