diff --git a/lib/features/mysql/mysql_stats_view.dart b/lib/features/mysql/mysql_stats_view.dart index a4040d4..d281bb0 100644 --- a/lib/features/mysql/mysql_stats_view.dart +++ b/lib/features/mysql/mysql_stats_view.dart @@ -94,11 +94,21 @@ class _MysqlStatsViewState extends material.State { Future _fetch() async { final conn = _lease?.connection; - if (conn == null || !conn.isConnected) return; + if (conn == null || !conn.isConnected) { + if (!mounted) return; + setState(() { + _error = 'Not connected'; + _loading = false; + }); + return; + } try { final stats = await conn.serverStats(); if (!mounted) return; - if (!replaceIfChanged(_stats, stats, (v) => _stats = v)) return; + if (!replaceIfChanged(_stats, stats, (v) => _stats = v)) { + if (_loading) setState(() => _loading = false); + return; + } setState(() => _loading = false); } catch (e) { if (!mounted) return; diff --git a/lib/features/mysql/mysql_table_view.dart b/lib/features/mysql/mysql_table_view.dart index d365c2f..ee06587 100644 --- a/lib/features/mysql/mysql_table_view.dart +++ b/lib/features/mysql/mysql_table_view.dart @@ -165,7 +165,15 @@ class _MysqlTableViewState extends material.State { Future _fetch({bool refreshCount = false}) async { final conn = _connection; - if (conn == null || !conn.isConnected) return; + if (conn == null || !conn.isConnected) { + if (mounted && _loading) { + setState(() { + _error = 'Not connected'; + _loading = false; + }); + } + return; + } if (_customSqlActive) { await _fetchCustom(); return; @@ -218,7 +226,15 @@ class _MysqlTableViewState extends material.State { Future _fetchCustom() async { final conn = _connection; - if (conn == null || !conn.isConnected) return; + if (conn == null || !conn.isConnected) { + if (mounted && _loading) { + setState(() { + _error = 'Not connected'; + _loading = false; + }); + } + return; + } final sql = _customSql; if (sql == null || sql.isEmpty) return; if (!mounted) return; diff --git a/lib/features/postgresql/postgres_stats_view.dart b/lib/features/postgresql/postgres_stats_view.dart index 07c0fe0..48cd198 100644 --- a/lib/features/postgresql/postgres_stats_view.dart +++ b/lib/features/postgresql/postgres_stats_view.dart @@ -104,11 +104,25 @@ class _PostgresStatsViewState extends material.State { Future _fetch() async { final c = _connection; - if (c == null || !c.isConnected) return; + if (c == null || !c.isConnected) { + if (!mounted) return; + setState(() { + _error = 'Not connected'; + _loading = false; + }); + return; + } try { final stats = await c.serverStats(); if (!mounted) return; - if (!replaceIfChanged(_stats, stats, (v) => _stats = v)) return; + if (!replaceIfChanged(_stats, stats, (v) => _stats = v)) { + if (_loading) { + setState(() { + _loading = false; + }); + } + return; + } setState(() { _loading = false; }); diff --git a/lib/features/postgresql/postgres_table_view.dart b/lib/features/postgresql/postgres_table_view.dart index 05e6ea2..653f39e 100644 --- a/lib/features/postgresql/postgres_table_view.dart +++ b/lib/features/postgresql/postgres_table_view.dart @@ -156,7 +156,15 @@ class _PostgresTableViewState extends material.State { /// [refreshCount] runs `COUNT(*)` (e.g. first load or Refresh). Pagination only runs SELECT. Future _fetch({bool refreshCount = false}) async { final conn = _connection; - if (conn == null || !conn.isConnected) return; + if (conn == null || !conn.isConnected) { + if (mounted && _loading) { + setState(() { + _error = 'Not connected'; + _loading = false; + }); + } + return; + } if (_customSqlActive) { await _fetchCustom(); return; @@ -219,7 +227,15 @@ class _PostgresTableViewState extends material.State { Future _fetchCustom() async { final conn = _connection; - if (conn == null || !conn.isConnected) return; + if (conn == null || !conn.isConnected) { + if (mounted && _loading) { + setState(() { + _error = 'Not connected'; + _loading = false; + }); + } + return; + } final sql = _customSql; if (sql == null || sql.isEmpty) return; if (!mounted) return; diff --git a/lib/features/sqlite/sqlite_table_view.dart b/lib/features/sqlite/sqlite_table_view.dart index fd3f4f7..2e05929 100644 --- a/lib/features/sqlite/sqlite_table_view.dart +++ b/lib/features/sqlite/sqlite_table_view.dart @@ -113,7 +113,15 @@ class _SqliteTableViewState extends material.State { Future _fetch({bool refreshCount = false}) async { final conn = _connection; - if (conn == null || !conn.isConnected) return; + if (conn == null || !conn.isConnected) { + if (mounted && _loading) { + setState(() { + _error = 'Not connected'; + _loading = false; + }); + } + return; + } setState(() { _loading = true; _error = null;