|
|
@ -260,35 +260,39 @@ class RTCManager { |
|
|
print('连接状态改变:$state,原因:$reason, localUid: ${connection.localUid}'); |
|
|
print('连接状态改变:$state,原因:$reason, localUid: ${connection.localUid}'); |
|
|
if(state == ConnectionStateType.connectionStateFailed && |
|
|
if(state == ConnectionStateType.connectionStateFailed && |
|
|
reason == ConnectionChangedReasonType.connectionChangedBannedByServer){ |
|
|
reason == ConnectionChangedReasonType.connectionChangedBannedByServer){ |
|
|
if (Get.isRegistered<RoomController>()) { |
|
|
|
|
|
final roomController = Get.find<RoomController>(); |
|
|
|
|
|
// 判断不是主播(从 RoomController.currentRole 获取角色) |
|
|
|
|
|
final isNotBroadcaster = roomController.currentRole != CurrentRole.broadcaster; |
|
|
|
|
|
if (isNotBroadcaster) { |
|
|
|
|
|
await roomController.leaveChannel(); |
|
|
|
|
|
// 调用 LiveChatMessageService 处理结束直播消息 |
|
|
|
|
|
LiveChatMessageService.instance.handleEndLiveMessage(); |
|
|
|
|
|
} else { |
|
|
|
|
|
if(roomController.isClose.value) return; |
|
|
|
|
|
// 退出房间时清空RTM消息 |
|
|
|
|
|
await roomController.leaveChannel(); |
|
|
|
|
|
await roomController.getLiveData(); |
|
|
|
|
|
await roomController.getLiveIncome(); |
|
|
|
|
|
SmartDialog.dismiss(); |
|
|
|
|
|
if (Get.isRegistered<RoomController>()) { |
|
|
|
|
|
final roomController = Get.find<RoomController>(); |
|
|
|
|
|
roomController.chatMessages.clear(); |
|
|
|
|
|
} |
|
|
|
|
|
// 如果还没有执行 pop,手动调用 Get.back() |
|
|
|
|
|
Get.off(() => SettlementPage()); |
|
|
|
|
|
// 等待页面关闭后再显示小窗口,确保小窗口能正确显示 |
|
|
|
|
|
Future.delayed(const Duration(milliseconds: 200), () { |
|
|
|
|
|
if (Get.isRegistered<OverlayController>()) { |
|
|
|
|
|
final overlayController = Get.find<OverlayController>(); |
|
|
|
|
|
overlayController.hide(); |
|
|
|
|
|
|
|
|
if(type != RTCType.call){ |
|
|
|
|
|
if (Get.isRegistered<RoomController>()) { |
|
|
|
|
|
final roomController = Get.find<RoomController>(); |
|
|
|
|
|
// 判断不是主播(从 RoomController.currentRole 获取角色) |
|
|
|
|
|
final isNotBroadcaster = roomController.currentRole != CurrentRole.broadcaster; |
|
|
|
|
|
if (isNotBroadcaster) { |
|
|
|
|
|
await roomController.leaveChannel(); |
|
|
|
|
|
// 调用 LiveChatMessageService 处理结束直播消息 |
|
|
|
|
|
LiveChatMessageService.instance.handleEndLiveMessage(); |
|
|
|
|
|
} else { |
|
|
|
|
|
if(roomController.isClose.value) return; |
|
|
|
|
|
// 退出房间时清空RTM消息 |
|
|
|
|
|
await roomController.leaveChannel(); |
|
|
|
|
|
await roomController.getLiveData(); |
|
|
|
|
|
await roomController.getLiveIncome(); |
|
|
|
|
|
SmartDialog.dismiss(); |
|
|
|
|
|
if (Get.isRegistered<RoomController>()) { |
|
|
|
|
|
final roomController = Get.find<RoomController>(); |
|
|
|
|
|
roomController.chatMessages.clear(); |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
// 如果还没有执行 pop,手动调用 Get.back() |
|
|
|
|
|
Get.off(() => SettlementPage()); |
|
|
|
|
|
// 等待页面关闭后再显示小窗口,确保小窗口能正确显示 |
|
|
|
|
|
Future.delayed(const Duration(milliseconds: 200), () { |
|
|
|
|
|
if (Get.isRegistered<OverlayController>()) { |
|
|
|
|
|
final overlayController = Get.find<OverlayController>(); |
|
|
|
|
|
overlayController.hide(); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
CallController.instance.hangUpCall(); |
|
|
} |
|
|
} |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|