|
|
|
@ -1,11 +1,17 @@ |
|
|
|
import 'package:dating_touchme_app/controller/discover/room_controller.dart'; |
|
|
|
import 'package:dating_touchme_app/controller/global.dart'; |
|
|
|
import 'package:dating_touchme_app/controller/overlay_controller.dart'; |
|
|
|
import 'package:dating_touchme_app/extension/ex_widget.dart'; |
|
|
|
import 'package:dating_touchme_app/generated/assets.dart'; |
|
|
|
import 'package:dating_touchme_app/model/live/live_chat_message.dart'; |
|
|
|
import 'package:dating_touchme_app/model/rtc/rtc_channel_detail.dart'; |
|
|
|
import 'package:dating_touchme_app/network/user_api.dart'; |
|
|
|
import 'package:dating_touchme_app/pages/discover/live_end_page.dart'; |
|
|
|
import 'package:dating_touchme_app/pages/discover/settlement_page.dart'; |
|
|
|
import 'package:dating_touchme_app/widget/live/disconnect_mic_dialog.dart'; |
|
|
|
import 'package:dating_touchme_app/widget/live/kick_list.dart'; |
|
|
|
import 'package:dating_touchme_app/widget/live/live_gift_popup.dart'; |
|
|
|
import 'package:dating_touchme_app/widget/live/live_room_user_profile_dialog.dart'; |
|
|
|
import 'package:easy_refresh/easy_refresh.dart'; |
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
|
@ -34,6 +40,59 @@ class LiveRoomUserHeader extends StatelessWidget { |
|
|
|
final VoidCallback? onFollowTap; |
|
|
|
final VoidCallback? onCloseTap; |
|
|
|
|
|
|
|
|
|
|
|
void _showGiftPopupForUser(RtcSeatUserInfo? userInfo, int type) async { |
|
|
|
|
|
|
|
// 获取 RoomController 判断当前用户角色 |
|
|
|
final _roomController = Get.find<RoomController>(); |
|
|
|
|
|
|
|
if (userInfo == null) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 获取目标用户ID(优先使用userId,如果没有则使用miId) |
|
|
|
final targetUserId = userInfo.uid; |
|
|
|
|
|
|
|
if (targetUserId == null) { |
|
|
|
SmartDialog.showToast('用户ID不存在'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 刷新玫瑰数量 |
|
|
|
await _roomController.getVirtualAccount(); |
|
|
|
|
|
|
|
// 创建必要的 ValueNotifier |
|
|
|
final activeGift = ValueNotifier<int?>(null); |
|
|
|
final giftNum = ValueNotifier<int>(1); |
|
|
|
_roomController.setDialogDismiss(true); |
|
|
|
SmartDialog.show( |
|
|
|
alignment: Alignment.bottomCenter, |
|
|
|
maskColor: Colors.black.withOpacity(0.5), |
|
|
|
onDismiss: (){ |
|
|
|
_roomController.setDialogDismiss(false); |
|
|
|
}, |
|
|
|
builder: (context) { |
|
|
|
return Obx(() { |
|
|
|
// 获取礼物列表 |
|
|
|
final giftProducts = _roomController.giftProducts; |
|
|
|
final giftList = giftProducts.toList(); |
|
|
|
|
|
|
|
return LiveGiftPopup( |
|
|
|
activeGift: activeGift, |
|
|
|
giftNum: giftNum, |
|
|
|
giftList: giftList, |
|
|
|
changeActive: (index) { |
|
|
|
activeGift.value = index; |
|
|
|
}, |
|
|
|
type: type, |
|
|
|
showHeader: false, // 不显示头部 |
|
|
|
targetUserId: targetUserId, // 设置目标用户ID |
|
|
|
); |
|
|
|
}); |
|
|
|
}, |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
@override |
|
|
|
Widget build(BuildContext context) { |
|
|
|
// 获取 RoomController 判断当前用户角色 |
|
|
|
@ -69,7 +128,57 @@ class LiveRoomUserHeader extends StatelessWidget { |
|
|
|
); |
|
|
|
}, |
|
|
|
), |
|
|
|
), |
|
|
|
).onTap(() async { |
|
|
|
// 检查是否是当前用户自己的消息 |
|
|
|
final currentUserId = GlobalData().userId ?? GlobalData().userData?.id; |
|
|
|
if (currentUserId != null && currentUserId == roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.userId) { |
|
|
|
// 是自己的头像,不显示弹框 |
|
|
|
return; |
|
|
|
} |
|
|
|
try { |
|
|
|
final _userApi = Get.find<UserApi>(); |
|
|
|
final response = await _userApi.getDongwoMarriageInformationDetail(miId: roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.miId ?? ""); |
|
|
|
if (response.data.isSuccess && response.data.data != null) { |
|
|
|
|
|
|
|
|
|
|
|
// 不是自己的消息,显示用户资料对话框 |
|
|
|
showUserProfileDialog( |
|
|
|
context, |
|
|
|
LiveChatMessage( |
|
|
|
userId: roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.userId ?? "", |
|
|
|
uid: roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.uid, |
|
|
|
userName: roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.nickName ?? "", |
|
|
|
avatar: roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.profilePhoto, |
|
|
|
miId: roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo?.miId, |
|
|
|
content: "", |
|
|
|
timestamp: 0 |
|
|
|
), |
|
|
|
(int type) => |
|
|
|
_showGiftPopupForUser(roomController.rtcChannelDetail |
|
|
|
.value?.anchorInfo, type), |
|
|
|
response.data.data! |
|
|
|
); |
|
|
|
} else { |
|
|
|
// 响应失败,设置错误信息 |
|
|
|
final errorMsg = response.data.message ?? '获取数据失败'; |
|
|
|
|
|
|
|
SmartDialog.showToast(errorMsg); |
|
|
|
} |
|
|
|
} catch(e, stackTrace){ |
|
|
|
print('获取用户信息失败: $e'); |
|
|
|
print('堆栈跟踪: $stackTrace'); |
|
|
|
|
|
|
|
SmartDialog.showToast('获取用户信息失败,请稍后重试'); |
|
|
|
// 不再 rethrow,避免导致闪退 |
|
|
|
} |
|
|
|
}), |
|
|
|
SizedBox(width: 7.w), |
|
|
|
Column( |
|
|
|
crossAxisAlignment: CrossAxisAlignment.start, |
|
|
|
@ -120,7 +229,7 @@ class LiveRoomUserHeader extends StatelessWidget { |
|
|
|
GestureDetector( |
|
|
|
onTap: () async { |
|
|
|
roomController.audienceList.clear(); |
|
|
|
await roomController.getAudienceList(); |
|
|
|
await roomController.getAudienceList(null); |
|
|
|
// 隐藏键盘 |
|
|
|
FocusScope.of(context).unfocus(); |
|
|
|
// 隐藏 overlay |
|
|
|
|