diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index bf05d183..92f62b76 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -206,7 +206,7 @@ class _ServerPageState extends State late final List children; if (srv.state == ServerState.finished) { if (cardStatus.value.flip) { - children = [title, ..._buildFlipedCard(srv)]; + children = [title, ..._buildFlippedCard(srv)]; } else { children = [title, ..._buildNormalCard(srv.status, srv.spi)]; } @@ -228,7 +228,7 @@ class _ServerPageState extends State ); } - List _buildFlipedCard(Server srv) { + List _buildFlippedCard(Server srv) { return [ UIs.height13, Row( diff --git a/lib/view/page/ssh/page.dart b/lib/view/page/ssh/page.dart index cdb75ad3..af532416 100644 --- a/lib/view/page/ssh/page.dart +++ b/lib/view/page/ssh/page.dart @@ -33,11 +33,14 @@ class SSHPage extends StatefulWidget { final ServerPrivateInfo spi; final String? initCmd; final bool pop; + final Function()? onSessionEnd; + const SSHPage({ super.key, required this.spi, this.initCmd, this.pop = true, + this.onSessionEnd, }); @override @@ -381,6 +384,7 @@ class _SSHPageState extends State with AutomaticKeepAliveClientMixin { if (mounted && widget.pop) { context.pop(); } + widget.onSessionEnd?.call(); } void _listen(Stream? stream) { diff --git a/lib/view/page/ssh/tab.dart b/lib/view/page/ssh/tab.dart index f2d830fd..9f597559 100644 --- a/lib/view/page/ssh/tab.dart +++ b/lib/view/page/ssh/tab.dart @@ -71,6 +71,7 @@ class _SSHTabPageState extends State if (confirm != true) { return; } + // debugPrint("Removing a tab whose tabId = $e"); _tabIds.remove(e); _refreshTabs(); }, @@ -104,6 +105,12 @@ class _SSHTabPageState extends State key: key, spi: spi, pop: false, + onSessionEnd: () { + // debugPrint("Session done received on page whose tabId = $name"); + // debugPrint("key = $key"); + _tabIds.remove(name); + _refreshTabs(); + }, ); _refreshTabs(); _tabController.animateTo(_tabIds.length - 1);