diff --git a/lib/controller/discover/room_controller.dart b/lib/controller/discover/room_controller.dart index d1722e7..1925052 100644 --- a/lib/controller/discover/room_controller.dart +++ b/lib/controller/discover/room_controller.dart @@ -640,7 +640,11 @@ class RoomController extends GetxController with WidgetsBindingObserver { } } + bool isClick = false; + Future joinChat(CurrentRole role) async { + if(isClick) return; + isClick = true; // 根据角色检查权限:男/女嘉宾需要摄像头和麦克风权限,普通观众只需要麦克风权限 bool granted = false; if (role == CurrentRole.maleAudience || role == CurrentRole.femaleAudience) { @@ -652,6 +656,7 @@ class RoomController extends GetxController with WidgetsBindingObserver { } if (!granted) { print('❌ [RoomController] 权限检查失败,无法上麦'); + isClick = false; return; } final data = { @@ -671,9 +676,11 @@ class RoomController extends GetxController with WidgetsBindingObserver { discoverController.loadRtcChannelPage(); } SmartDialog.showToast(response.data.message); + isClick = false; return; } if (!response.data.data['success']) { + isClick = false; return; } currentRole = role; @@ -712,9 +719,12 @@ class RoomController extends GetxController with WidgetsBindingObserver { ); rtcChannelDetail.value = newDetail; isLive.value = true; + isClick = false; } Future leaveChat() async { + if(isClick) return; + isClick = true; final data = {'channelId': RTCManager.instance.currentChannelId}; final response = await _networkService.rtcApi.disconnectRtcChannel(data); if (response.data.isSuccess) { @@ -739,6 +749,7 @@ class RoomController extends GetxController with WidgetsBindingObserver { } currentRole = CurrentRole.normalUser; } + isClick = false; } /// 获取 RTC 频道详情(公有方法,供外部调用)