From f1bfb1249476859bc04b5eeef3092fe16dafc6aa Mon Sep 17 00:00:00 2001 From: Kingtous Date: Fri, 23 Sep 2022 10:18:30 +0800 Subject: [PATCH 1/2] opt: center/align topright when toggle chat --- flutter/lib/models/chat_model.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flutter/lib/models/chat_model.dart b/flutter/lib/models/chat_model.dart index e9952db1e..dbf5ac753 100644 --- a/flutter/lib/models/chat_model.dart +++ b/flutter/lib/models/chat_model.dart @@ -167,8 +167,10 @@ class ChatModel with ChangeNotifier { _isShowChatPage = !_isShowChatPage; notifyListeners(); await windowManager.setSize(Size(400, 600)); + await windowManager.setAlignment(Alignment.topRight); } else { await windowManager.setSize(Size(800, 600)); + await windowManager.center(); await Future.delayed(Duration(milliseconds: 100)); _isShowChatPage = !_isShowChatPage; notifyListeners(); From d939fdac7258b42efe1915c860b840e09beb63b1 Mon Sep 17 00:00:00 2001 From: Kingtous Date: Fri, 23 Sep 2022 11:01:33 +0800 Subject: [PATCH 2/2] opt: hide home button when it only exists on tab --- .../lib/desktop/widgets/tabbar_widget.dart | 74 +++++++++++-------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index dc9bdccb8..1b82b6b55 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -490,6 +490,15 @@ class _ListView extends StatelessWidget { this.tabBuilder, this.labelGetter}); + /// Check whether to show ListView + /// + /// Conditions: + /// - hide single item when only has one item (home) on [DesktopTabPage]. + bool isHideSingleItem() { + return state.value.tabs.length == 1 && + controller.tabType == DesktopTabType.main; + } + @override Widget build(BuildContext context) { return Obx(() => ListView( @@ -497,38 +506,41 @@ class _ListView extends StatelessWidget { scrollDirection: Axis.horizontal, shrinkWrap: true, physics: const BouncingScrollPhysics(), - children: state.value.tabs.asMap().entries.map((e) { - final index = e.key; - final tab = e.value; - return _Tab( - index: index, - label: labelGetter == null - ? Rx(tab.label) - : labelGetter!(tab.label), - selectedIcon: tab.selectedIcon, - unselectedIcon: tab.unselectedIcon, - closable: tab.closable, - selected: state.value.selected, - onClose: () { - if (tab.onTabCloseButton != null) { - tab.onTabCloseButton!(); - } else { - controller.remove(index); - } - }, - onSelected: () => controller.jumpTo(index), - tabBuilder: tabBuilder == null - ? null - : (Widget icon, Widget labelWidget, TabThemeConf themeConf) { - return tabBuilder!( - tab.label, - icon, - labelWidget, - themeConf, - ); + children: isHideSingleItem() + ? List.empty() + : state.value.tabs.asMap().entries.map((e) { + final index = e.key; + final tab = e.value; + return _Tab( + index: index, + label: labelGetter == null + ? Rx(tab.label) + : labelGetter!(tab.label), + selectedIcon: tab.selectedIcon, + unselectedIcon: tab.unselectedIcon, + closable: tab.closable, + selected: state.value.selected, + onClose: () { + if (tab.onTabCloseButton != null) { + tab.onTabCloseButton!(); + } else { + controller.remove(index); + } }, - ); - }).toList())); + onSelected: () => controller.jumpTo(index), + tabBuilder: tabBuilder == null + ? null + : (Widget icon, Widget labelWidget, + TabThemeConf themeConf) { + return tabBuilder!( + tab.label, + icon, + labelWidget, + themeConf, + ); + }, + ); + }).toList())); } }