@@ -106,9 +106,17 @@ class _MyAppState extends State<LoopBackSample> {
106
106
107
107
void _onTrack (RTCTrackEvent event) {
108
108
print ('onTrack' );
109
- if (event.track.kind == 'video' && (event.streams.isNotEmpty)) {
110
- print ('New stream: ' + event.streams[0 ].id);
111
- _remoteRenderer.srcObject = event.streams[0 ];
109
+ }
110
+
111
+ void _onAddTrack (MediaStream stream, MediaStreamTrack track) {
112
+ if (track.kind == 'video' ) {
113
+ _remoteRenderer.srcObject = stream;
114
+ }
115
+ }
116
+
117
+ void _onRemoveTrack (MediaStream stream, MediaStreamTrack track) {
118
+ if (track.kind == 'video' ) {
119
+ _remoteRenderer.srcObject = null ;
112
120
}
113
121
}
114
122
@@ -164,8 +172,6 @@ class _MyAppState extends State<LoopBackSample> {
164
172
_peerConnection! .onIceGatheringState = _onIceGatheringState;
165
173
_peerConnection! .onIceConnectionState = _onIceConnectionState;
166
174
_peerConnection! .onConnectionState = _onPeerConnectionState;
167
- _peerConnection! .onAddStream = _onAddStream;
168
- _peerConnection! .onRemoveStream = _onRemoveStream;
169
175
_peerConnection! .onIceCandidate = _onCandidate;
170
176
_peerConnection! .onRenegotiationNeeded = _onRenegotiationNeeded;
171
177
@@ -175,10 +181,14 @@ class _MyAppState extends State<LoopBackSample> {
175
181
176
182
switch (sdpSemantics) {
177
183
case 'plan-b' :
184
+ _peerConnection! .onAddStream = _onAddStream;
185
+ _peerConnection! .onRemoveStream = _onRemoveStream;
178
186
await _peerConnection! .addStream (_localStream! );
179
187
break ;
180
188
case 'unified-plan' :
181
189
_peerConnection! .onTrack = _onTrack;
190
+ _peerConnection! .onAddTrack = _onAddTrack;
191
+ _peerConnection! .onRemoveTrack = _onRemoveTrack;
182
192
_localStream! .getTracks ().forEach ((track) {
183
193
_peerConnection! .addTrack (track, _localStream! );
184
194
});
@@ -247,6 +257,7 @@ class _MyAppState extends State<LoopBackSample> {
247
257
description.type = 'answer' ;
248
258
await _peerConnection! .setRemoteDescription (description);
249
259
260
+ // _peerConnection!.getStats();
250
261
/* Unfied-Plan replaceTrack
251
262
var stream = await MediaDevices.getDisplayMedia(mediaConstraints);
252
263
_localRenderer.srcObject = _localStream;
0 commit comments