@@ -17,17 +17,13 @@ class CallSample extends StatefulWidget {
1717}
1818
1919class _CallSampleState extends State <CallSample > {
20- GlobalKey <FormState > _formKey = new GlobalKey <FormState >();
2120 Signaling _signaling;
22- String _roomId;
2321 String _displayName = Platform .operatingSystem + "_flutter" ;
2422 List <dynamic > _peers;
25-
23+ var _self_id;
2624 final _localRenderer = new RTCVideoRenderer ();
2725 final _remoteRenderer = new RTCVideoRenderer ();
2826 bool _inCalling = false ;
29- Timer _timer;
30-
3127 final String serverIP;
3228
3329 _CallSampleState ({Key key, @required this .serverIP});
@@ -52,60 +48,65 @@ class _CallSampleState extends State<CallSample> {
5248
5349 void _connect () async {
5450 if (_signaling == null ) {
55- _signaling = new Signaling ('ws://' + serverIP + ':4442' , _displayName);
56- await _signaling.connect ();
57-
58- _signaling.onPeers.listen ((message) {
59- Map <String , dynamic > mapData = message;
60- List <dynamic > peers = mapData['data' ];
61- this .setState (() {
62- _peers = peers;
51+ _signaling = new Signaling ('ws://' + serverIP + ':4442' , _displayName)
52+ ..connect ();
53+
54+ _signaling.onStateChange = (SignalingState state) {
55+ switch (state){
56+ case SignalingState .CallStateNew :
57+ this .setState ((){ _inCalling = true ; });
58+ break ;
59+ case SignalingState .CallStateBye :
60+ this .setState ((){ _inCalling = false ; });
61+ break ;
62+ }
63+ };
64+
65+ _signaling.onPeersUpdate = ((event){
66+ this .setState ((){
67+ _self_id = event['self' ];
68+ _peers = event['peers' ];
6369 });
6470 });
6571
66- _signaling.onLocalStream.listen ((message) {
67- Map <String , dynamic > mapData = message;
68- _localRenderer.srcObject = mapData['stream' ];
72+ _signaling.onLocalStream = ((stream) {
73+ this .setState (() {
74+ _localRenderer.srcObject = stream;
75+ });
6976 });
7077
71- _signaling.onRemoteStreamAdd.listen ((message) {
72- Map <String , dynamic > mapData = message;
73- _remoteRenderer.srcObject = mapData['stream' ];
78+ _signaling.onAddRemoteStream = ((stream) {
79+ _remoteRenderer.srcObject = stream;
7480 });
7581
76- _signaling.onRemoteStreamRemoved. listen ((message ) {
82+ _signaling.onRemoveRemoteStream = ((stream ) {
7783 this .setState (() {
78- _inCalling = false ;
7984 _remoteRenderer.srcObject = null ;
8085 });
8186 });
8287 }
8388 }
8489
8590 _invitePeer (context, peerId) {
86- this .setState (() {
87- _inCalling = true ;
88- });
8991 if (_signaling != null ) {
9092 _signaling.invite (peerId, 'video' );
9193 }
9294 }
9395
9496 _hangUp () {
95- this .setState (() {
96- _inCalling = false ;
97- });
9897 if (_signaling != null ) {
9998 _signaling.bye ();
10099 }
101100 }
102101
103102 _buildRow (context, peer) {
103+ if (peer['id' ] == _self_id)
104+ return null ;
104105 return ListBody (children: < Widget > [
105106 ListTile (
106107 title: Text (peer['name' ]),
107108 onTap: () => _invitePeer (context, peer['id' ]),
108- trailing: Icon (Icons .video_call ),
109+ trailing: Icon (Icons .videocam ),
109110 ),
110111 Divider ()
111112 ]);
@@ -124,11 +125,11 @@ class _CallSampleState extends State<CallSample> {
124125 ),
125126 ],
126127 ),
127- floatingActionButton: FloatingActionButton (
128+ floatingActionButton: _inCalling ? FloatingActionButton (
128129 onPressed: _hangUp,
129130 tooltip: 'Hangup' ,
130- child: new Icon (_inCalling ? Icons .call_end : Icons .phone ),
131- ),
131+ child: new Icon (Icons .call_end),
132+ ) : null ,
132133 body: _inCalling
133134 ? new OrientationBuilder (
134135 builder: (context, orientation) {
0 commit comments