From 4d43bb52f259f87cc9e2494509baec150f420c32 Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Mon, 10 Nov 2025 10:44:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(message):=20=E5=AE=8C=E5=96=84=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E6=B6=88=E6=81=AF=E5=86=85=E5=AE=B9=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=92=8C=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 支持展示图片、语音、视频、文件和位置类型的消息内容 -优化消息时间格式化逻辑,区分今天、昨天和其他日期 - 调整推荐用户列表高度并移除冗余间距 --- .../message/conversation_controller.dart | 59 +++++++++++-------- lib/pages/message/conversation_tab.dart | 4 +- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/lib/controller/message/conversation_controller.dart b/lib/controller/message/conversation_controller.dart index e64706c..97e1f8d 100644 --- a/lib/controller/message/conversation_controller.dart +++ b/lib/controller/message/conversation_controller.dart @@ -54,7 +54,23 @@ class ConversationController extends GetxController { /// 获取会话的最新消息 String getLastMessageContent(EMMessage? message) { if(message?.body.type == MessageType.TXT){ - + EMTextMessageBody body = message?.body as EMTextMessageBody; + return body.content; + }else if(message?.body.type == MessageType.IMAGE){ + EMImageMessageBody body = message?.body as EMImageMessageBody; + return '[图片]'; + }else if(message?.body.type == MessageType.VOICE){ + EMVoiceMessageBody body = message?.body as EMVoiceMessageBody; + return '[语音]'; + }else if(message?.body.type == MessageType.VIDEO){ + EMVideoMessageBody body = message?.body as EMVideoMessageBody; + return '[视频]'; + }else if(message?.body.type == MessageType.FILE){ + EMFileMessageBody body = message?.body as EMFileMessageBody; + return '[文件]'; + }else if(message?.body.type == MessageType.LOCATION){ + EMLocationMessageBody body = message?.body as EMLocationMessageBody; + return '[位置]'; } return '暂无消息'; } @@ -72,34 +88,29 @@ class ConversationController extends GetxController { } } - /// 获取会话最后消息的时间 - String getConversationLastMessageTime(EMConversation conversation) { - try { - // 返回默认时间 - return '刚刚'; - } catch (e) { - if (Get.isLogEnable) { - Get.log('Error getting last message time: $e'); - } - return ''; - } - } - /// 格式化消息时间 String formatMessageTime(int timestamp) { DateTime messageTime = DateTime.fromMillisecondsSinceEpoch(timestamp); DateTime now = DateTime.now(); - Duration difference = now.difference(messageTime); - - if (difference.inDays > 0) { - return '${difference.inDays}天前'; - } else if (difference.inHours > 0) { - return '${difference.inHours}小时前'; - } else if (difference.inMinutes > 0) { - return '${difference.inMinutes}分钟前'; - } else { - return '刚刚'; + + // 检查是否是今天 + if (messageTime.year == now.year && + messageTime.month == now.month && + messageTime.day == now.day) { + // 今天显示时:分 + return '${messageTime.hour.toString().padLeft(2, '0')}:${messageTime.minute.toString().padLeft(2, '0')}'; + } + + // 检查是否是昨天 + DateTime yesterday = now.subtract(Duration(days: 1)); + if (messageTime.year == yesterday.year && + messageTime.month == yesterday.month && + messageTime.day == yesterday.day) { + return '昨天'; } + + // 其他日期显示月-日 + return '${messageTime.month.toString().padLeft(2, '0')}-${messageTime.day.toString().padLeft(2, '0')}'; } Future loadContact(String userId) async{ diff --git a/lib/pages/message/conversation_tab.dart b/lib/pages/message/conversation_tab.dart index 1e98da7..7a20406 100644 --- a/lib/pages/message/conversation_tab.dart +++ b/lib/pages/message/conversation_tab.dart @@ -74,7 +74,7 @@ class _ConversationTabState extends State with AutomaticKeepAli // 构建推荐用户横向滚动列表 Widget _buildRecommendedUsers() { return SizedBox( - height: 100, + height: 60, child: ListView.builder( scrollDirection: Axis.horizontal, padding: const EdgeInsets.symmetric(horizontal: 16), @@ -124,8 +124,6 @@ class _ConversationTabState extends State with AutomaticKeepAli ), ], ), - const SizedBox(height: 4), - Text(user["type"], style: const TextStyle(color: Colors.white)), ], ), );