Skip to content

Commit 2a42fb2

Browse files
authored
Merge pull request #11 from itsthetaste/support-null-tracks-in-sender-replaceTrack-and-setTrack
if track is null pass null to the js object
2 parents 65d08e7 + b7c40d7 commit 2a42fb2

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

lib/src/rtc_rtp_sender_impl.dart

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)