From 78f14f890f58f6b0b71529ba71c1de8408e946a4 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 22 Nov 2025 20:11:01 +0800 Subject: [PATCH] :lipstick: Optimize embedded section of chat input --- assets/i18n/en-US.json | 3 ++- lib/widgets/chat/chat_input.dart | 23 ++++++++++++++++++++--- lib/widgets/stickers/sticker_picker.dart | 4 ++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/assets/i18n/en-US.json b/assets/i18n/en-US.json index 19be30e8..52a42efc 100644 --- a/assets/i18n/en-US.json +++ b/assets/i18n/en-US.json @@ -1341,5 +1341,6 @@ "unindexedFiles": "Unindexed files", "folder": "Folder", "clearCompleted": "Clear Completed", - "contentCantEmpty": "Content cannot be empty" + "contentCantEmpty": "Content cannot be empty", + "features": "Features" } \ No newline at end of file diff --git a/lib/widgets/chat/chat_input.dart b/lib/widgets/chat/chat_input.dart index 77415d58..00212a93 100644 --- a/lib/widgets/chat/chat_input.dart +++ b/lib/widgets/chat/chat_input.dart @@ -45,6 +45,8 @@ void _insertPlaceholder(TextEditingController controller, String placeholder) { const kInputDrawerExpandedHeight = 180.0; +const kExpandedSectionTabHeight = 32.0; + class _ExpandedSection extends StatelessWidget { final TextEditingController messageController; final SnPoll? selectedPoll; @@ -75,9 +77,23 @@ class _ExpandedSection extends StatelessWidget { length: 2, child: Column( children: [ - TabBar( - splashBorderRadius: const BorderRadius.all(Radius.circular(40)), - tabs: [Tab(text: 'Features'), Tab(text: 'Stickers')], + PreferredSize( + preferredSize: const Size.fromHeight(kExpandedSectionTabHeight), + child: TabBar( + splashBorderRadius: const BorderRadius.all( + Radius.circular(40), + ), + tabs: [ + Tab( + text: 'features'.tr(), + height: kExpandedSectionTabHeight, + ), + Tab( + text: 'stickers'.tr(), + height: kExpandedSectionTabHeight, + ), + ], + ), ), SizedBox( height: kInputDrawerExpandedHeight, @@ -248,6 +264,7 @@ class ChatInput extends HookConsumerWidget { void send() { inputFocusNode.requestFocus(); + if (isExpanded.value) isExpanded.value = false; onSend.call(); } diff --git a/lib/widgets/stickers/sticker_picker.dart b/lib/widgets/stickers/sticker_picker.dart index c51b4a19..b7a2ab6c 100644 --- a/lib/widgets/stickers/sticker_picker.dart +++ b/lib/widgets/stickers/sticker_picker.dart @@ -381,6 +381,10 @@ class _EmbeddedPackSwitcherState extends State<_EmbeddedPackSwitcher> { return Tooltip( message: packs[i].name, child: FilterChip( + visualDensity: const VisualDensity( + horizontal: 0, + vertical: -4, + ), label: Text(packs[i].name, overflow: TextOverflow.ellipsis), selected: selected, onSelected: (_) {