@@ -35,6 +35,7 @@ class RTCPeerConnection {
35
35
RTCSignalingState _signalingState;
36
36
RTCIceGatheringState _iceGatheringState;
37
37
RTCIceConnectionState _iceConnectionState;
38
+ MediaStream _mediaStream;
38
39
39
40
// public: delegate
40
41
SignalingStateCallback onSignalingState;
@@ -64,71 +65,63 @@ class RTCPeerConnection {
64
65
65
66
RTCPeerConnection (this ._jsPc) {
66
67
_peerConnectionId = base64Encode (this .toString ().codeUnits);
68
+
67
69
_jsPc.onAddStream.listen ((mediaStreamEvent) {
68
70
final jsStream = mediaStreamEvent.stream;
69
- print ("onaddstream argument: $jsStream " );
70
- final mediaStream = MediaStream (jsStream, _peerConnectionId);
71
- if (onAddStream != null ) {
72
- onAddStream (mediaStream);
73
- }
71
+ this ._mediaStream = MediaStream (jsStream, _peerConnectionId);
72
+ onAddStream? .call (_mediaStream);
73
+
74
74
jsStream.onAddTrack.listen ((mediaStreamTrackEvent) {
75
75
final jsTrack =
76
76
(mediaStreamTrackEvent as HTML .MediaStreamTrackEvent ).track;
77
77
final MediaStreamTrack track = MediaStreamTrack (jsTrack);
78
- mediaStream.addTrack (track, addToNative: false );
79
- if (onAddTrack != null ) {
80
- onAddTrack (mediaStream, track);
81
- }
78
+ _mediaStream.addTrack (track, addToNative: false ).then ((_) {
79
+ onAddTrack? .call (_mediaStream, track);
80
+ });
82
81
});
82
+
83
83
jsStream.onRemoveTrack.listen ((mediaStreamTrackEvent) {
84
84
final jsTrack =
85
85
(mediaStreamTrackEvent as HTML .MediaStreamTrackEvent ).track;
86
86
final MediaStreamTrack track = MediaStreamTrack (jsTrack);
87
- mediaStream.removeTrack (track, removeFromNative: false );
88
- if (onRemoveTrack != null ) {
89
- onRemoveTrack (mediaStream, track);
90
- }
87
+ _mediaStream.removeTrack (track, removeFromNative: false ).then ((_) {
88
+ onRemoveTrack? .call (_mediaStream, track);
89
+ });
91
90
});
92
91
});
92
+
93
93
_jsPc.onDataChannel.listen ((dataChannelEvent) {
94
- if (onDataChannel != null ) {
95
- final dc = RTCDataChannel (dataChannelEvent.channel);
96
- onDataChannel (dc);
97
- }
94
+ onDataChannel? .call (RTCDataChannel (dataChannelEvent.channel));
98
95
});
96
+
99
97
_jsPc.onIceCandidate.listen ((iceEvent) {
100
- if (onIceCandidate != null && iceEvent.candidate != null ) {
101
- onIceCandidate (RTCIceCandidate .fromJs (iceEvent.candidate));
98
+ if (iceEvent.candidate != null ) {
99
+ onIceCandidate? . call (RTCIceCandidate .fromJs (iceEvent.candidate));
102
100
}
103
101
});
102
+
104
103
_jsPc.onIceConnectionStateChange.listen ((_) {
105
- if (onIceConnectionState != null ) {
106
- _iceConnectionState =
107
- iceConnectionStateForString (_jsPc.iceConnectionState);
108
- onIceConnectionState (_iceConnectionState);
109
- }
104
+ this ._iceConnectionState =
105
+ iceConnectionStateForString (_jsPc.iceConnectionState);
106
+ onIceConnectionState? .call (_iceConnectionState);
110
107
});
108
+
111
109
JS .JsObject .fromBrowserObject (_jsPc)['onicegatheringstatechange' ] =
112
110
JS .JsFunction .withThis ((_) {
113
- if (onIceGatheringState != null ) {
114
- _iceGatheringState =
115
- iceGatheringStateforString (_jsPc.iceGatheringState);
116
- onIceGatheringState (_iceGatheringState);
117
- }
111
+ this ._iceGatheringState =
112
+ iceGatheringStateforString (_jsPc.iceGatheringState);
113
+ onIceGatheringState.call (_iceGatheringState);
118
114
});
115
+
119
116
_jsPc.onRemoveStream.listen ((mediaStreamEvent) {
120
- final jsStream = mediaStreamEvent.stream;
121
- final mediaStream = MediaStream (jsStream, _peerConnectionId);
122
- if (onRemoveStream != null ) {
123
- onRemoveStream (mediaStream);
124
- }
117
+ onRemoveStream? .call (_mediaStream);
125
118
});
119
+
126
120
_jsPc.onSignalingStateChange.listen ((_) {
127
- if (onSignalingState != null ) {
128
- _signalingState = signalingStateForString (_jsPc.signalingState);
129
- onSignalingState (_signalingState);
130
- }
121
+ _signalingState = signalingStateForString (_jsPc.signalingState);
122
+ onSignalingState? .call (_signalingState);
131
123
});
124
+
132
125
JS .JsObject .fromBrowserObject (_jsPc)['ontrack' ] =
133
126
JS .JsFunction .withThis ((_, trackEvent) {
134
127
// trackEvent is JsObject conforming to RTCTrackEvent
0 commit comments