From f40ed4d7fb173274ff05adf0a8da940588c755fc Mon Sep 17 00:00:00 2001 From: Zeew Date: Fri, 8 Aug 2025 08:45:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E5=88=97=E8=A1=A8=E4=B8=AD=E6=A0=87=E9=A2=98=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tim_uikit_conversation_item.dart | 57 +++++++++++++++---- .../tim_uikit_conversation_last_msg.dart | 2 + 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_item.dart b/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_item.dart index 229ec84..4e2d944 100644 --- a/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_item.dart +++ b/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_item.dart @@ -16,6 +16,7 @@ import 'package:tencent_cloud_chat_uikit/ui/widgets/unread_message.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart'; import 'package:tencent_cloud_chat_uikit/theme/color.dart'; import 'package:tencent_cloud_chat_uikit/theme/tui_theme.dart'; +import 'package:tencent_cloud_chat_uikit/ui/utils/platform.dart'; typedef LastMessageBuilder = Widget? Function(V2TimMessage? lastMsg, List groupAtInfoList); @@ -53,13 +54,20 @@ class TIMUIKitConversationItem extends TIMUIKitStatelessWidget { Widget _getShowMsgWidget(BuildContext context) { final isDesktopScreen = TUIKitScreenUtils.getFormFactor(context) == DeviceType.Desktop; + final isAndroid = PlatformUtils().isAndroid; + + // 针对安卓设备的字体大小调整 + final msgFontSize = isDesktopScreen + ? 12.0 + : (isAndroid ? 13.0 : 14.0); // 安卓设备使用稍小的字体 + if (lastMsg != null && lastMessageBuilder != null && lastMessageBuilder!(lastMsg, groupAtInfoList) != null) { return lastMessageBuilder!(lastMsg, groupAtInfoList)!; } if (lastMsg != null || (draftText != null && draftText != "")) { return TIMUIKitLastMsg( - fontSize: isDesktopScreen ? 12 : 14, + fontSize: msgFontSize, groupAtInfoList: groupAtInfoList, lastMsg: lastMsg, isDisturb: isDisturb, @@ -102,6 +110,13 @@ class TIMUIKitConversationItem extends TIMUIKitStatelessWidget { Widget tuiBuild(BuildContext context, TUIKitBuildValue value) { final TUITheme theme = value.theme; final isDesktopScreen = TUIKitScreenUtils.getFormFactor(context) == DeviceType.Desktop; + final isAndroid = PlatformUtils().isAndroid; + + // 针对安卓设备的字体大小调整 + final titleFontSize = isDesktopScreen + ? 14.0 + : (isAndroid ? 16.0 : 18.0); // 安卓设备使用稍小的字体 + return Container( padding: const EdgeInsets.only(top: 6, bottom: 6, left: 16, right: 16), decoration: BoxDecoration( @@ -150,8 +165,10 @@ class TIMUIKitConversationItem extends TIMUIKitStatelessWidget { children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded( + Flexible( + flex: 3, child: Text( nickName, softWrap: true, @@ -161,11 +178,17 @@ class TIMUIKitConversationItem extends TIMUIKitStatelessWidget { style: TextStyle( height: 1, color: theme.conversationItemTitleTextColor, - fontSize: isDesktopScreen ? 14 : 18, + fontSize: titleFontSize, fontWeight: FontWeight.w400, ), )), - _getTimeStringForChatWidget(context, theme), + Flexible( + flex: 1, + child: Container( + margin: const EdgeInsets.only(left: 8), + child: _getTimeStringForChatWidget(context, theme), + ), + ), ], ), if (isHaveSecondLine()) @@ -175,15 +198,25 @@ class TIMUIKitConversationItem extends TIMUIKitStatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Expanded(child: _getShowMsgWidget(context)), + Expanded( + child: Container( + constraints: const BoxConstraints( + minHeight: 20, + ), + child: _getShowMsgWidget(context), + ), + ), if (isDisturb) - SizedBox( - width: 18, - height: 18, - child: Icon( - Icons.notifications_off, - color: theme.conversationItemNoNotificationIconColor, - size: isDesktopScreen ? 14 : 16.0, + Container( + margin: const EdgeInsets.only(left: 8), + child: SizedBox( + width: 18, + height: 18, + child: Icon( + Icons.notifications_off, + color: theme.conversationItemNoNotificationIconColor, + size: isDesktopScreen ? 14 : 16.0, + ), ), ) ], diff --git a/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_last_msg.dart b/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_last_msg.dart index e1080f4..b23d1c0 100644 --- a/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_last_msg.dart +++ b/lib/ui/views/TIMUIKitConversation/tim_uikit_conversation_last_msg.dart @@ -18,6 +18,7 @@ import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/common_utils.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/message.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/screen_utils.dart'; +import 'package:tencent_cloud_chat_uikit/ui/utils/platform.dart'; import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitTextField/special_text/DefaultSpecialTextSpanBuilder.dart'; import 'package:tencent_cloud_chat_uikit/theme/tui_theme.dart'; import 'package:tencent_cloud_chat_uikit/theme/tui_theme_view_model.dart'; @@ -210,6 +211,7 @@ class _TIMUIKitLastMsgState extends TIMUIKitState { String disturbUnreadCountInfo = _getDisturbUnreadCountInfo(); return Row( crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, children: [ if (icon != null) Container(