Skip to content

ui(table): DDL loading overlay must always pop #447

Description

@ZhuchkaTriplesix

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

  • Loading route always popped in finally (or equivalent), even if widget unmounted
  • Failed DDL fetch still clears spinner and surfaces error
  • Widget/integration test or regression test for dispose-during-fetch

Suggested fix

Capture navigator before await; try/finally { if (navigator.canPop()) navigator.pop(); }.

Metadata

Metadata

Labels

bugSomething isn't workinguiUser interface components and widgets

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions