8000 Update Signaling of Call. · alusor/flutter-webrtc@6e2e6a1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6e2e6a1

Browse files
committed
Update Signaling of Call.
1 parent ffa7bda commit 6e2e6a1

File tree

2 files changed

+239
-179
lines changed

2 files changed

+239
-179
lines changed

example/lib/src/call_sample/call_sample.dart

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,13 @@ class CallSample extends StatefulWidget {
1717
}
1818

1919
class _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

Comments
 (0)
0