|
|
|
@ -429,6 +429,43 @@ class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
|
message: json.encode(messageData), |
|
|
|
); |
|
|
|
print('✅ 礼物消息已发送: ${gift.productTitle}'); |
|
|
|
|
|
|
|
// 在公屏显示赠送礼物消息 |
|
|
|
final senderNickName = GlobalData().userData?.nickName ?? '用户'; |
|
|
|
String targetNickName = '用户'; |
|
|
|
final targetUserIdStr = targetUserId.toString(); |
|
|
|
|
|
|
|
// 从频道详情中查找目标用户昵称 |
|
|
|
final channelDetail = rtcChannelDetail.value; |
|
|
|
if (channelDetail != null) { |
|
|
|
// 检查是否是主持人 |
|
|
|
if (channelDetail.anchorInfo?.userId == targetUserIdStr || |
|
|
|
channelDetail.anchorInfo?.miId == targetUserIdStr) { |
|
|
|
targetNickName = channelDetail.anchorInfo?.nickName ?? '用户'; |
|
|
|
} |
|
|
|
// 检查是否是男嘉宾 |
|
|
|
else if (channelDetail.maleInfo?.userId == targetUserIdStr || |
|
|
|
channelDetail.maleInfo?.miId == targetUserIdStr) { |
|
|
|
targetNickName = channelDetail.maleInfo?.nickName ?? '用户'; |
|
|
|
} |
|
|
|
// 检查是否是女嘉宾 |
|
|
|
else if (channelDetail.femaleInfo?.userId == targetUserIdStr || |
|
|
|
channelDetail.femaleInfo?.miId == targetUserIdStr) { |
|
|
|
targetNickName = channelDetail.femaleInfo?.nickName ?? '用户'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 创建公屏消息 |
|
|
|
final giftMessage = LiveChatMessage( |
|
|
|
userId: GlobalData().userId ?? GlobalData().userData?.id ?? '', |
|
|
|
userName: senderNickName, |
|
|
|
avatar: GlobalData().userData?.profilePhoto, |
|
|
|
content: '向$targetNickName赠送了【${gift.productTitle}】', |
|
|
|
timestamp: DateTime.now().millisecondsSinceEpoch, |
|
|
|
); |
|
|
|
|
|
|
|
// 添加到消息列表 |
|
|
|
_addMessage(giftMessage); |
|
|
|
} catch (e) { |
|
|
|
print('❌ 发送礼物失败: $e'); |
|
|
|
SmartDialog.showToast('发送礼物失败'); |
|
|
|
@ -442,9 +479,51 @@ class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
|
try { |
|
|
|
final svgaFile = message['svgaFile']?.toString() ?? ''; |
|
|
|
final giftProductId = message['giftProductId']?.toString(); |
|
|
|
final targetUserId = message['targetUserId']?.toInt() ?? 0; |
|
|
|
final senderUserId = message['senderUserId']?.toInt() ?? 0; |
|
|
|
final senderNickName = message['senderNickName']?.toString() ?? ''; |
|
|
|
final targetUserId = message['targetUserId']; |
|
|
|
final senderUserId = message['senderUserId']; |
|
|
|
final senderNickName = message['senderNickName']?.toString() ?? '用户'; |
|
|
|
|
|
|
|
// 从礼物产品列表中查找礼物名称 |
|
|
|
String giftTitle = '礼物'; |
|
|
|
if (giftProductId != null && giftProductId.isNotEmpty) { |
|
|
|
try { |
|
|
|
final gift = giftProducts.firstWhere( |
|
|
|
(g) => g.productId == giftProductId, |
|
|
|
); |
|
|
|
giftTitle = gift.productTitle; |
|
|
|
} catch (e) { |
|
|
|
// 如果找不到对应的礼物,使用默认名称 |
|
|
|
print('⚠️ 未找到礼物ID: $giftProductId'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 获取目标用户昵称 |
|
|
|
String targetNickName = '用户'; |
|
|
|
final channelDetail = rtcChannelDetail.value; |
|
|
|
if (channelDetail != null) { |
|
|
|
// 检查是否是主持人 |
|
|
|
if (channelDetail.anchorInfo?.uid == targetUserId) { |
|
|
|
targetNickName = channelDetail.anchorInfo?.nickName ?? '用户'; |
|
|
|
} |
|
|
|
// 检查是否是男嘉宾 |
|
|
|
else if (channelDetail.maleInfo?.userId == targetUserId) { |
|
|
|
targetNickName = channelDetail.maleInfo?.nickName ?? '用户'; |
|
|
|
} |
|
|
|
// 检查是否是女嘉宾 |
|
|
|
else if (channelDetail.femaleInfo?.userId == targetUserId) { |
|
|
|
targetNickName = channelDetail.femaleInfo?.nickName ?? '用户'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 在公屏显示赠送礼物消息 |
|
|
|
final giftMessage = LiveChatMessage( |
|
|
|
userId: senderUserId?.toString() ?? '', |
|
|
|
userName: senderNickName, |
|
|
|
avatar: null, // 接收到的消息可能没有头像信息 |
|
|
|
content: '向$targetNickName赠送了【$giftTitle】', |
|
|
|
timestamp: DateTime.now().millisecondsSinceEpoch, |
|
|
|
); |
|
|
|
_addMessage(giftMessage); |
|
|
|
|
|
|
|
if (svgaFile.isNotEmpty) { |
|
|
|
// 添加到播放队列 |
|
|
|
@ -453,7 +532,9 @@ class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
|
SvgaAnimationItem( |
|
|
|
svgaFile: svgaFile, |
|
|
|
targetUserId: targetUserId, |
|
|
|
senderUserId: senderUserId, |
|
|
|
senderUserId: senderUserId is int |
|
|
|
? senderUserId |
|
|
|
: (int.tryParse(senderUserId?.toString() ?? '') ?? 0), |
|
|
|
giftProductId: giftProductId, |
|
|
|
), |
|
|
|
); |
|
|
|
|