|
|
@ -3,7 +3,9 @@ import 'dart:convert'; |
|
|
|
|
|
|
|
|
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; |
|
|
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; |
|
|
import 'package:agora_token_generator/agora_token_generator.dart'; |
|
|
import 'package:agora_token_generator/agora_token_generator.dart'; |
|
|
|
|
|
import 'package:dating_touchme_app/controller/overlay_controller.dart'; |
|
|
import 'package:dating_touchme_app/extension/ex_widget.dart'; |
|
|
import 'package:dating_touchme_app/extension/ex_widget.dart'; |
|
|
|
|
|
import 'package:dating_touchme_app/pages/discover/settlement_page.dart'; |
|
|
import 'package:dating_touchme_app/rtc/rtm_manager.dart'; |
|
|
import 'package:dating_touchme_app/rtc/rtm_manager.dart'; |
|
|
import 'package:flutter/foundation.dart'; |
|
|
import 'package:flutter/foundation.dart'; |
|
|
import 'package:flutter/material.dart'; |
|
|
import 'package:flutter/material.dart'; |
|
|
@ -255,6 +257,7 @@ class RTCManager { |
|
|
ConnectionStateType state, |
|
|
ConnectionStateType state, |
|
|
ConnectionChangedReasonType reason, |
|
|
ConnectionChangedReasonType reason, |
|
|
) async{ |
|
|
) async{ |
|
|
|
|
|
print('连接状态改变:$state,原因:$reason, localUid: ${connection.localUid}'); |
|
|
if(state == ConnectionStateType.connectionStateFailed && |
|
|
if(state == ConnectionStateType.connectionStateFailed && |
|
|
reason == ConnectionChangedReasonType.connectionChangedBannedByServer){ |
|
|
reason == ConnectionChangedReasonType.connectionChangedBannedByServer){ |
|
|
if (Get.isRegistered<RoomController>()) { |
|
|
if (Get.isRegistered<RoomController>()) { |
|
|
@ -265,11 +268,29 @@ class RTCManager { |
|
|
await roomController.leaveChannel(); |
|
|
await roomController.leaveChannel(); |
|
|
// 调用 LiveChatMessageService 处理结束直播消息 |
|
|
// 调用 LiveChatMessageService 处理结束直播消息 |
|
|
LiveChatMessageService.instance.handleEndLiveMessage(); |
|
|
LiveChatMessageService.instance.handleEndLiveMessage(); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 退出房间时清空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(); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
print('连接状态改变:$state,原因:$reason, localUid: ${connection.localUid}'); |
|
|
|
|
|
if (onConnectionStateChanged != null) { |
|
|
if (onConnectionStateChanged != null) { |
|
|
onConnectionStateChanged!(connection, state, reason); |
|
|
onConnectionStateChanged!(connection, state, reason); |
|
|
} |
|
|
} |
|
|
@ -614,6 +635,10 @@ class RTCManager { |
|
|
print('当前不在频道中'); |
|
|
print('当前不在频道中'); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_zeroTimer?.cancel(); |
|
|
|
|
|
_zeroTimer = null; |
|
|
await RTMManager.instance.unsubscribe(_currentChannelId ?? ''); |
|
|
await RTMManager.instance.unsubscribe(_currentChannelId ?? ''); |
|
|
await _engine!.leaveChannel(); |
|
|
await _engine!.leaveChannel(); |
|
|
_currentUid = null; |
|
|
_currentUid = null; |
|
|
|