|
@@ -52,6 +52,11 @@ class TrtcRoom extends BaseRoom {
|
|
|
@override
|
|
|
Future<void> exit() async {
|
|
|
try {
|
|
|
+ while (remoteMembers.isNotEmpty) {
|
|
|
+ removeMemberAt(0);
|
|
|
+ }
|
|
|
+ _player?.dispose();
|
|
|
+ _removeEvents();
|
|
|
events.dispose();
|
|
|
// await _client!.exitRoom();
|
|
|
_client = null;
|
|
@@ -61,6 +66,12 @@ class TrtcRoom extends BaseRoom {
|
|
|
});
|
|
|
} catch (e) {
|
|
|
// TODO: log
|
|
|
+ print("DEBUG:TRTC exit error $e");
|
|
|
+ try {
|
|
|
+ await TRTCCloud.destroySharedInstance();
|
|
|
+ } catch (e) {
|
|
|
+ print("DEBUG:TRTC destroySharedInstance error $e");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -107,6 +118,15 @@ class TrtcRoom extends BaseRoom {
|
|
|
events.on(TRTCCloudListener.onUserSubStreamAvailable, _subStreamAvailable);
|
|
|
}
|
|
|
|
|
|
+ void _removeEvents() {
|
|
|
+ events.off(TRTCCloudListener.onError, _onError);
|
|
|
+ events.off(TRTCCloudListener.onWarning, _onWarning);
|
|
|
+ events.off(TRTCCloudListener.onRemoteUserEnterRoom, _onRemoteUserEnter);
|
|
|
+ events.off(TRTCCloudListener.onRemoteUserLeaveRoom, _onRemoteUserLeave);
|
|
|
+ events.off(TRTCCloudListener.onFirstVideoFrame, _onFirstVideoFrame);
|
|
|
+ events.off(TRTCCloudListener.onUserSubStreamAvailable, _subStreamAvailable);
|
|
|
+ }
|
|
|
+
|
|
|
void _onError(dynamic param) {
|
|
|
print(param); // TODO:
|
|
|
}
|
|
@@ -120,6 +140,8 @@ class TrtcRoom extends BaseRoom {
|
|
|
//TODO: remove print
|
|
|
print(
|
|
|
"!!!!!!!_onRemoteUserEnter local-${localMember.params.userId} remote-$param");
|
|
|
+ print(
|
|
|
+ "DEBUG:TRTC 获取到 TRTC 远程用户加入 local-${localMember.params.userId} remote-$param events: ${events.hashCode}");
|
|
|
final member = TrtcRemoteMember(userId: param);
|
|
|
addMember(member);
|
|
|
memberJoined.emit(this, member);
|