diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index c33e2b291..ece2ec797 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -18,11 +18,11 @@ import 'models/platform_model.dart'; final globalKey = GlobalKey(); final navigationBarKey = GlobalKey(); -var isAndroid = Platform.isAndroid; -var isIOS = Platform.isIOS; +final isAndroid = Platform.isAndroid; +final isIOS = Platform.isIOS; +final isDesktop = Platform.isWindows || Platform.isMacOS || Platform.isLinux; var isWeb = false; var isWebDesktop = false; -var isDesktop = Platform.isWindows || Platform.isMacOS || Platform.isLinux; var version = ""; int androidVersion = 0; diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index 530696a48..7198a1c3c 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -161,6 +161,7 @@ class DesktopTabBar extends StatelessWidget { } static onAdd(RxList tabs, TabInfo tab) { + if (!isDesktop) return; int index = tabs.indexWhere((e) => e.key == tab.key); if (index >= 0) { selected.value = index; @@ -178,6 +179,7 @@ class DesktopTabBar extends StatelessWidget { } static remove(RxList tabs, int index) { + if (!isDesktop) return; if (index < 0) return; if (index == tabs.length - 1) { selected.value = max(0, selected.value - 1); @@ -189,12 +191,14 @@ class DesktopTabBar extends StatelessWidget { } static void jumpTo(RxList tabs, int index) { + if (!isDesktop) return; if (index < 0 || index >= tabs.length) return; selected.value = index; controller.value.jumpToPage(selected.value); } static void close(String? key) { + if (!isDesktop) return; final tabBar = _tabBarListViewKey.currentWidget as _ListView?; if (tabBar == null) return; final tabs = tabBar.tabs; diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index 527cea689..dec13f245 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -465,7 +465,12 @@ class ServerModel with ChangeNotifier { try { final client = Client.fromJson(jsonDecode(evt['client'])); parent.target?.dialogManager.dismissByTag(getLoginDialogTag(client.id)); - _clients.add(client); + final index = _clients.indexWhere((c) => c.id == client.id); + if (index < 0) { + _clients.add(client); + } else { + _clients[index].authorized = true; + } DesktopTabBar.onAdd( tabs, TabInfo(