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