From 27c89a9f9e8e89e506dfc3979fed13f982e91113 Mon Sep 17 00:00:00 2001 From: zhx Date: Mon, 18 May 2026 12:39:03 +0800 Subject: [PATCH] fix: show long badges in room chat items --- lib/ui_kit/widgets/room/room_msg_item.dart | 38 ++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/ui_kit/widgets/room/room_msg_item.dart b/lib/ui_kit/widgets/room/room_msg_item.dart index 55d5f1f..f1f217f 100644 --- a/lib/ui_kit/widgets/room/room_msg_item.dart +++ b/lib/ui_kit/widgets/room/room_msg_item.dart @@ -1313,6 +1313,30 @@ class _MsgItemState extends State { ); } + Widget _buildLongMedals({ + required String? userId, + List fallbackBadges = const [], + }) { + final hasUserId = (userId ?? "").trim().isNotEmpty; + if (!hasUserId && fallbackBadges.isEmpty) { + return const SizedBox.shrink(); + } + return SizedBox( + width: double.infinity, + child: SCUserBadgeStrip( + userId: userId, + fallbackBadges: fallbackBadges, + displayScope: SCUserBadgeDisplayScope.long, + height: 22.w, + badgeHeight: 20.w, + longBadgeWidth: 62.w, + spacing: 4.w, + maxBadges: 8, + reserveSpace: false, + ), + ); + } + int _msgColor(String type) { switch (type) { case SCRoomMsgType.joinRoom: @@ -1851,13 +1875,18 @@ class _MsgItemState extends State { SizedBox(width: 8.w), Expanded( child: SizedBox( - height: 50.w, + height: 73.w, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ _buildUserNameAndLevels(widget.msg.user), SizedBox(height: 2.w), + _buildLongMedals( + userId: widget.msg.user?.id, + fallbackBadges: _activeWearBadges(widget.msg.user), + ), + SizedBox(height: 2.w), _buildMedals( userId: widget.msg.user?.id, fallbackBadges: _activeWearBadges(widget.msg.user), @@ -1897,13 +1926,18 @@ class _MsgItemState extends State { SizedBox(width: 8.w), Expanded( child: SizedBox( - height: 50.w, + height: 73.w, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ _buildUserNameAndLevels(user), SizedBox(height: 2.w), + _buildLongMedals( + userId: user.id, + fallbackBadges: _activeWearBadges(user), + ), + SizedBox(height: 2.w), _buildMedals( userId: user.id, fallbackBadges: _activeWearBadges(user),