@@ -19,21 +19,29 @@ class RTCRtpSenderWeb extends RTCRtpSender {
1919 bool _ownsTrack = false ;
2020
2121 @override
22- Future <void > replaceTrack (MediaStreamTrack track) async {
22+ Future <void > replaceTrack (MediaStreamTrack ? track) async {
2323 try {
24- var nativeTrack = track as MediaStreamTrackWeb ;
25- jsutil.callMethod (_jsRtpSender, 'replaceTrack' , [nativeTrack.jsTrack]);
24+ if (track != null ) {
25+ var nativeTrack = track as MediaStreamTrackWeb ;
26+ jsutil.callMethod (_jsRtpSender, 'replaceTrack' , [nativeTrack.jsTrack]);
27+ } else {
28+ jsutil.callMethod (_jsRtpSender, 'replaceTrack' , [null ]);
29+ }
2630 } on Exception catch (e) {
2731 throw 'Unable to RTCRtpSender::replaceTrack: ${e .toString ()}' ;
2832 }
2933 }
3034
3135 @override
32- Future <void > setTrack (MediaStreamTrack track,
36+ Future <void > setTrack (MediaStreamTrack ? track,
3337 {bool takeOwnership = true }) async {
3438 try {
35- var nativeTrack = track as MediaStreamTrackWeb ;
36- jsutil.callMethod (_jsRtpSender, 'replaceTrack' , [nativeTrack.jsTrack]);
39+ if (track != null ) {
40+ var nativeTrack = track as MediaStreamTrackWeb ;
41+ jsutil.callMethod (_jsRtpSender, 'setTrack' , [nativeTrack.jsTrack]);
42+ } else {
43+ jsutil.callMethod (_jsRtpSender, 'setTrack' , [null ]);
44+ }
3745 } on Exception catch (e) {
3846 throw 'Unable to RTCRtpSender::setTrack: ${e .toString ()}' ;
3947 }
0 commit comments