|
|
|
@ -1,7 +1,10 @@ |
|
|
|
import 'package:cached_network_image/cached_network_image.dart'; |
|
|
|
import 'package:dating_touchme_app/controller/discover/room_controller.dart'; |
|
|
|
import 'package:dating_touchme_app/controller/overlay_controller.dart'; |
|
|
|
import 'package:dating_touchme_app/generated/assets.dart'; |
|
|
|
import 'package:dating_touchme_app/model/discover/rtc_channel_model.dart'; |
|
|
|
import 'package:dating_touchme_app/pages/discover/live_room_page.dart'; |
|
|
|
import 'package:dating_touchme_app/rtc/rtc_manager.dart'; |
|
|
|
import 'package:flutter/material.dart'; |
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
|
import 'package:get/get.dart'; |
|
|
|
@ -39,10 +42,38 @@ class _LiveItemWidgetState extends State<LiveItemWidget> { |
|
|
|
Widget build(BuildContext context) { |
|
|
|
return InkWell( |
|
|
|
onTap: () async { |
|
|
|
// 获取目标 channelId |
|
|
|
String? targetChannelId; |
|
|
|
if (widget.channelId != null && widget.channelId!.isNotEmpty) { |
|
|
|
await roomController.joinChannel(widget.channelId!); |
|
|
|
targetChannelId = widget.channelId!; |
|
|
|
} else if (widget.item is Map && widget.item['channelId'] != null) { |
|
|
|
await roomController.joinChannel(widget.item['channelId'].toString()); |
|
|
|
targetChannelId = widget.item['channelId'].toString(); |
|
|
|
} |
|
|
|
|
|
|
|
if (targetChannelId == null || targetChannelId.isEmpty) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 获取当前直播间的 channelId |
|
|
|
final currentChannelId = RTCManager.instance.currentChannelId; |
|
|
|
|
|
|
|
// 如果 channelId 与当前直播间一致,直接进入直播间(逻辑与点击小窗口一致) |
|
|
|
if (currentChannelId != null && |
|
|
|
currentChannelId.isNotEmpty && |
|
|
|
currentChannelId == targetChannelId) { |
|
|
|
// 隐藏小窗口(如果显示的话) |
|
|
|
if (Get.isRegistered<OverlayController>()) { |
|
|
|
final overlayController = Get.find<OverlayController>(); |
|
|
|
overlayController.hide(); |
|
|
|
} |
|
|
|
// 直接跳转到直播间 |
|
|
|
Get.to(() => const LiveRoomPage(id: 0)); |
|
|
|
} else { |
|
|
|
// 如果不一致,先退出当前直播间,再加入新的直播间 |
|
|
|
if (currentChannelId != null && currentChannelId.isNotEmpty) { |
|
|
|
await roomController.leaveChannel(); |
|
|
|
} |
|
|
|
await roomController.joinChannel(targetChannelId); |
|
|
|
} |
|
|
|
}, |
|
|
|
child: ClipRRect( |
|
|
|
|