From cd29f09b0889894692dec9146d714837eb5fb772 Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Sun, 11 Jan 2026 22:06:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor(live=5Fchat):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E7=9B=B4=E6=92=AD=E6=B6=88=E6=81=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 _handleEndLiveMessage 方法改为公共方法 handleEndLiveMessage - 在 RTCManager 中添加对主播离开频道的处理 - 当远端用户为主播且频道ID存在时自动离开频道 - 集成 LiveChatMessageService 处理结束直播消息 - 添加对 OverlayController 的检查和关闭逻辑 --- lib/rtc/rtc_manager.dart | 6 ++++++ lib/service/live_chat_message_service.dart | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/rtc/rtc_manager.dart b/lib/rtc/rtc_manager.dart index b6091e4..0e51098 100644 --- a/lib/rtc/rtc_manager.dart +++ b/lib/rtc/rtc_manager.dart @@ -9,6 +9,7 @@ import 'package:get/get.dart'; import '../controller/discover/room_controller.dart'; import '../controller/message/call_controller.dart'; import '../pages/discover/live_room_page.dart'; +import '../service/live_chat_message_service.dart'; enum RTCType { call, // 通话(语音/视频通话) @@ -208,6 +209,11 @@ class RTCManager { channelId != null && channelId.isNotEmpty) { final roomController = Get.find(); + if(remoteUid == roomController.rtcChannelDetail.value?.anchorInfo?.uid){ + await roomController.leaveChannel(); + // 调用 LiveChatMessageService 处理结束直播消息 + LiveChatMessageService.instance.handleEndLiveMessage(); + } await roomController.fetchRtcChannelDetail(channelId); } } diff --git a/lib/service/live_chat_message_service.dart b/lib/service/live_chat_message_service.dart index 4267e71..f0d4b73 100644 --- a/lib/service/live_chat_message_service.dart +++ b/lib/service/live_chat_message_service.dart @@ -72,7 +72,7 @@ class LiveChatMessageService { if (messageData['type'] == 'end_live') { RoomController controller = Get.find(); await controller.leaveChannel(); - _handleEndLiveMessage(); + handleEndLiveMessage(); return; } @@ -119,7 +119,7 @@ class LiveChatMessageService { } /// 处理结束直播消息 - void _handleEndLiveMessage() { + void handleEndLiveMessage() { try { // 检查 overlay 是否显示,如果显示则关闭 if (Get.isRegistered()) {