@@ -3,61 +3,61 @@ import 'dart:async';
33import 'package:flutter/foundation.dart' ;
44import 'package:flutter/material.dart' ;
55import 'package:flutter_webrtc/flutter_webrtc.dart' ;
6+ import 'package:sip_ua/sip_ua.dart' ;
67
78import 'widgets/action_button.dart' ;
8- import 'package:sip_ua/sip_ua.dart' ;
99
1010class CallScreenWidget extends StatefulWidget {
11- final SIPUAHelper _helper;
12- final Call _call;
13- CallScreenWidget (this ._helper, this ._call, {Key key}) : super (key: key);
11+ final SIPUAHelper ? _helper;
12+ final Call ? _call;
13+ CallScreenWidget (this ._helper, this ._call, {Key ? key}) : super (key: key);
1414 @override
1515 _MyCallScreenWidget createState () => _MyCallScreenWidget ();
1616}
1717
1818class _MyCallScreenWidget extends State <CallScreenWidget >
1919 implements SipUaHelperListener {
20- RTCVideoRenderer _localRenderer = RTCVideoRenderer ();
21- RTCVideoRenderer _remoteRenderer = RTCVideoRenderer ();
22- double _localVideoHeight;
23- double _localVideoWidth;
24- EdgeInsetsGeometry _localVideoMargin;
25- MediaStream _localStream;
26- MediaStream _remoteStream;
20+ RTCVideoRenderer ? _localRenderer = RTCVideoRenderer ();
21+ RTCVideoRenderer ? _remoteRenderer = RTCVideoRenderer ();
22+ double ? _localVideoHeight;
23+ double ? _localVideoWidth;
24+ EdgeInsetsGeometry ? _localVideoMargin;
25+ MediaStream ? _localStream;
26+ MediaStream ? _remoteStream;
2727
2828 bool _showNumPad = false ;
2929 String _timeLabel = '00:00' ;
30- Timer _timer;
30+ late Timer _timer;
3131 bool _audioMuted = false ;
3232 bool _videoMuted = false ;
3333 bool _speakerOn = false ;
3434 bool _hold = false ;
35- String _holdOriginator;
35+ String ? _holdOriginator;
3636 CallStateEnum _state = CallStateEnum .NONE ;
37- SIPUAHelper get helper => widget._helper;
37+ SIPUAHelper ? get helper => widget._helper;
3838
3939 bool get voiceonly =>
40- (_localStream == null || _localStream.getVideoTracks ().isEmpty) &&
41- (_remoteStream == null || _remoteStream.getVideoTracks ().isEmpty);
40+ (_localStream == null || _localStream! .getVideoTracks ().isEmpty) &&
41+ (_remoteStream == null || _remoteStream! .getVideoTracks ().isEmpty);
4242
43- String get remote_identity => call.remote_identity;
43+ String ? get remote_identity => call! .remote_identity;
4444
45- String get direction => call.direction;
45+ String get direction => call! .direction;
4646
47- Call get call => widget._call;
47+ Call ? get call => widget._call;
4848
4949 @override
5050 initState () {
5151 super .initState ();
5252 _initRenderers ();
53- helper.addSipUaHelperListener (this );
53+ helper! .addSipUaHelperListener (this );
5454 _startTimer ();
5555 }
5656
5757 @override
5858 deactivate () {
5959 super .deactivate ();
60- helper.removeSipUaHelperListener (this );
60+ helper! .removeSipUaHelperListener (this );
6161 _disposeRenderers ();
6262 }
6363
@@ -78,20 +78,20 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
7878
7979 void _initRenderers () async {
8080 if (_localRenderer != null ) {
81- await _localRenderer.initialize ();
81+ await _localRenderer! .initialize ();
8282 }
8383 if (_remoteRenderer != null ) {
84- await _remoteRenderer.initialize ();
84+ await _remoteRenderer! .initialize ();
8585 }
8686 }
8787
8888 void _disposeRenderers () {
8989 if (_localRenderer != null ) {
90- _localRenderer.dispose ();
90+ _localRenderer! .dispose ();
9191 _localRenderer = null ;
9292 }
9393 if (_remoteRenderer != null ) {
94- _remoteRenderer.dispose ();
94+ _remoteRenderer! .dispose ();
9595 _remoteRenderer = null ;
9696 }
9797 }
@@ -107,15 +107,15 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
107107 }
108108
109109 if (callState.state == CallStateEnum .MUTED ) {
110- if (callState.audio) _audioMuted = true ;
111- if (callState.video) _videoMuted = true ;
110+ if (callState.audio! ) _audioMuted = true ;
111+ if (callState.video! ) _videoMuted = true ;
112112 this .setState (() {});
113113 return ;
114114 }
115115
116116 if (callState.state == CallStateEnum .UNMUTED ) {
117- if (callState.audio) _audioMuted = false ;
118- if (callState.video) _videoMuted = false ;
117+ if (callState.audio! ) _audioMuted = false ;
118+ if (callState.video! ) _videoMuted = false ;
119119 this .setState (() {});
120120 return ;
121121 }
@@ -154,10 +154,10 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
154154 void registrationStateChanged (RegistrationState state) {}
155155
156156 void _cleanUp () {
157- _localStream? .getTracks ()? .forEach ((track) {
157+ _localStream? .getTracks ().forEach ((track) {
158158 track.stop ();
159159 });
160- _localStream.dispose ();
160+ _localStream! .dispose ();
161161 _localStream = null ;
162162 }
163163
@@ -170,19 +170,19 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
170170 }
171171
172172 void _handelStreams (CallState event) async {
173- MediaStream stream = event.stream;
173+ MediaStream ? stream = event.stream;
174174 if (event.originator == 'local' ) {
175175 if (_localRenderer != null ) {
176- _localRenderer.srcObject = stream;
176+ _localRenderer! .srcObject = stream;
177177 }
178178 if (! kIsWeb && ! WebRTC .platformIsDesktop) {
179- event.stream? .getAudioTracks ()? .first? .enableSpeakerphone (false );
179+ event.stream? .getAudioTracks ().first.enableSpeakerphone (false );
180180 }
181181 _localStream = stream;
182182 }
183183 if (event.originator == 'remote' ) {
184184 if (_remoteRenderer != null ) {
185- _remoteRenderer.srcObject = stream;
185+ _remoteRenderer! .srcObject = stream;
186186 }
187187 _remoteStream = stream;
188188 }
@@ -205,12 +205,12 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
205205 }
206206
207207 void _handleHangup () {
208- call.hangup ();
208+ call! .hangup ();
209209 _timer.cancel ();
210210 }
211211
212212 void _handleAccept () async {
213- bool remote_has_video = call.remote_has_video;
213+ bool remote_has_video = call! .remote_has_video;
214214 final mediaConstraints = < String , dynamic > {
215215 'audio' : true ,
216216 'video' : remote_has_video
@@ -229,41 +229,41 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
229229 mediaStream = await navigator.mediaDevices.getUserMedia (mediaConstraints);
230230 }
231231
232- call.answer (helper.buildCallOptions (! remote_has_video),
232+ call! .answer (helper! .buildCallOptions (! remote_has_video),
233233 mediaStream: mediaStream);
234234 }
235235
236236 void _switchCamera () {
237237 if (_localStream != null ) {
238- _localStream.getVideoTracks ()[0 ]. switchCamera ( );
238+ Helper . switchCamera ( _localStream! .getVideoTracks ()[0 ]);
239239 }
240240 }
241241
242242 void _muteAudio () {
243243 if (_audioMuted) {
244- call.unmute (true , false );
244+ call! .unmute (true , false );
245245 } else {
246- call.mute (true , false );
246+ call! .mute (true , false );
247247 }
248248 }
249249
250250 void _muteVideo () {
251251 if (_videoMuted) {
252- call.unmute (false , true );
252+ call! .unmute (false , true );
253253 } else {
254- call.mute (false , true );
254+ call! .mute (false , true );
255255 }
256256 }
257257
258258 void _handleHold () {
259259 if (_hold) {
260- call.unhold ();
260+ call! .unhold ();
261261 } else {
262- call.hold ();
262+ call! .hold ();
263263 }
264264 }
265265
266- String _tansfer_target;
266+ late String _tansfer_target;
267267 void _handleTransfer () {
268268 showDialog <Null >(
269269 context: context,
@@ -286,7 +286,7 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
286286 TextButton (
287287 child: Text ('Ok' ),
288288 onPressed: () {
289- call.refer (_tansfer_target);
289+ call! .refer (_tansfer_target);
290290 Navigator .of (context).pop ();
291291 },
292292 ),
@@ -304,7 +304,7 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
304304
305305 void _handleDtmf (String tone) {
306306 print ('Dtmf tone => $tone ' );
307- call.sendDTMF (tone);
307+ call! .sendDTMF (tone);
308308 }
309309
310310 void _handleKeyPad () {
@@ -317,7 +317,7 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
317317 if (_localStream != null ) {
318318 _speakerOn = ! _speakerOn;
319319 if (! kIsWeb) {
320- _localStream.getAudioTracks ()[0 ].enableSpeakerphone (_speakerOn);
320+ _localStream! .getAudioTracks ()[0 ].enableSpeakerphone (_speakerOn);
321321 }
322322 }
323323 }
@@ -502,14 +502,14 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
502502
503503 if (! voiceonly && _remoteStream != null ) {
504504 stackWidgets.add (Center (
505- child: RTCVideoView (_remoteRenderer),
505+ child: RTCVideoView (_remoteRenderer! ),
506506 ));
507507 }
508508
509509 if (! voiceonly && _localStream != null ) {
510510 stackWidgets.add (Container (
511511 child: AnimatedContainer (
512- child: RTCVideoView (_localRenderer),
512+ child: RTCVideoView (_localRenderer! ),
513513 height: _localVideoHeight,
514514 width: _localVideoWidth,
515515 alignment: Alignment .topRight,
@@ -536,7 +536,7 @@ class _MyCallScreenWidget extends State<CallScreenWidget>
536536 child: Text (
537537 (voiceonly ? 'VOICE CALL' : 'VIDEO CALL' ) +
538538 (_hold
539- ? ' PAUSED BY ${this ._holdOriginator .toUpperCase ()}'
539+ ? ' PAUSED BY ${this ._holdOriginator ! .toUpperCase ()}'
540540 : '' ),
541541 style: TextStyle (fontSize: 24 , color: Colors .black54),
542542 ))),
0 commit comments