Skip to content

Commit a73c884

Browse files
committed
Xong sample video conference mới
1 parent 434727f commit a73c884

2 files changed

Lines changed: 52 additions & 49 deletions

File tree

example/lib/tab/conference_tab.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ class ConferenceTab extends StatefulWidget {
1414

1515
class ConferenceTabState extends State<ConferenceTab> {
1616
String myUserId = 'Not connected...';
17-
String token = "eyJjdHkiOiJzdHJpbmdlZS1hcGk7dj0xIiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJqdGkiOiJTS0xIb2NCdDl6Qk5qc1pLeThZaUVkSzRsU3NBZjhCSHpyLTE2NDI3MzkxNTgiLCJpc3MiOiJTS0xIb2NCdDl6Qk5qc1pLeThZaUVkSzRsU3NBZjhCSHpyIiwiZXhwIjoxNzQyNzM5MTU4LCJ1c2VySWQiOiJ1c2VyMSJ9.L6yQsh53Riv29pADP3wqQKjDAJCtYnMLD_csz289p-c";
18-
String roomToken = "eyJjdHkiOiJzdHJpbmdlZS1hcGk7dj0xIiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJqdGkiOiJTS0xIb2NCdDl6Qk5qc1pLeThZaUVkSzRsU3NBZjhCSHpyLTE2NDI3MzkxNTgiLCJpc3MiOiJTS0xIb2NCdDl6Qk5qc1pLeThZaUVkSzRsU3NBZjhCSHpyIiwiZXhwIjoxNzQyNzM5MTU4LCJyb29tSWQiOiJyb29tLXZuLTEtVEMwRjUxSDhCUC0xNTg5MzcwMDM4Nzg4IiwicGVybWlzc2lvbnMiOnsicHVibGlzaCI6dHJ1ZSwic3Vic2NyaWJlIjp0cnVlLCJjb250cm9sX3Jvb20iOnRydWUsInJlY29yZCI6dHJ1ZX19.ML0dQSac6H9xPGRa9iUwfIccf-rvTmwBCbWgO6fibug";
17+
String token = "";
18+
String roomToken = "";
1919

2020
@override
2121
void initState() {

example/lib/ui/room.dart

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ class RoomState extends State<Room> {
4949
if (value['status']) {
5050
_room = value['body']['room'];
5151
initRoom(value['body']['videoTrackInfos'], value['body']['users']);
52+
} else {
53+
clearDataEndDismiss();
5254
}
5355
});
5456
}
@@ -217,12 +219,7 @@ class RoomState extends State<Room> {
217219
_room.publish(value['body']).then((value) {
218220
if (value['status']) {
219221
setState(() {
220-
// _hasLocalView = true;
221222
_localTrack = value['body'];
222-
// _localTrackView = _localTrack.attach(
223-
// alignment: Alignment.center,
224-
// scalingType: ScalingType.fit,
225-
// );
226223
});
227224
}
228225
});
@@ -269,18 +266,15 @@ class RoomState extends State<Room> {
269266
}
270267

271268
void handleRemoveVideoTrackEvent(StringeeVideoTrackInfo trackInfo) {
272-
_room.unsubscribe(trackInfo).then((value) {
273-
if (value['status']) {
274-
setState(() {
275-
if (_remoteTracks.length > 0) {
276-
for (int i = 0; i < _remoteTracks.length; i++) {
277-
StringeeVideoTrack track = _remoteTracks[i];
278-
if (track.id == trackInfo.id) {
279-
_remoteTracks.removeAt(i);
280-
}
281-
}
269+
setState(() {
270+
if (_remoteTracks.length > 0) {
271+
for (int i = 0; i < _remoteTracks.length; i++) {
272+
StringeeVideoTrack track = _remoteTracks[i];
273+
if (track.id == trackInfo.id) {
274+
_remoteTracks.removeAt(i);
275+
_remoteTrackViews.removeAt(i);
282276
}
283-
});
277+
}
284278
}
285279
});
286280
}
@@ -290,13 +284,26 @@ class RoomState extends State<Room> {
290284
void handleTrackReadyToPlayEvent(StringeeVideoTrack track) {
291285
print("handleTrackReadyToPlayEvent");
292286
if (track.isLocal) {
293-
setState(() {
294-
_hasLocalView = true;
295-
_localTrackView = track.attach(
296-
alignment: Alignment.center,
287+
if (track.isScreenCapture) {
288+
StringeeVideoView videoView = track.attach(
289+
isOverlay: true,
290+
height: 200.0,
291+
width: 150.0,
297292
scalingType: ScalingType.fit,
298293
);
299-
});
294+
295+
setState(() {
296+
_remoteTrackViews.add(videoView);
297+
});
298+
} else {
299+
setState(() {
300+
_hasLocalView = true;
301+
_localTrackView = track.attach(
302+
alignment: Alignment.center,
303+
scalingType: ScalingType.fit,
304+
);
305+
});
306+
}
300307
} else {
301308
StringeeVideoView videoView = track.attach(
302309
isOverlay: true,
@@ -339,16 +346,21 @@ class RoomState extends State<Room> {
339346
// remove foreground service notification
340347
flutterLocalNotificationsPlugin
341348
.resolvePlatformSpecificImplementation<
342-
AndroidFlutterLocalNotificationsPlugin>()
349+
AndroidFlutterLocalNotificationsPlugin>()
343350
?.stopForegroundService();
344351

345352
_room.unpublish(_shareTrack).then((result) {
346353
if (result['status']) {
347-
_shareTrack.close().then((value) {
348-
if (result['status']) {
349-
setState(() {
350-
_sharingScreen = false;
351-
});
354+
setState(() {
355+
_sharingScreen = false;
356+
if (_remoteTracks.length > 0) {
357+
for (int i = 0; i < _remoteTracks.length; i++) {
358+
StringeeVideoTrack track = _remoteTracks[i];
359+
if (track.localId == _shareTrack.localId) {
360+
_remoteTracks.removeAt(i);
361+
_remoteTrackViews.removeAt(i);
362+
}
363+
}
352364
}
353365
});
354366
}
@@ -362,7 +374,7 @@ class RoomState extends State<Room> {
362374
setState(() {
363375
_sharingScreen = true;
364376
_shareTrack = result['body'];
365-
// _trackList.add(_shareTrack);
377+
_remoteTracks.add(_shareTrack);
366378
});
367379
}
368380
});
@@ -405,29 +417,20 @@ class RoomState extends State<Room> {
405417
}
406418

407419
void leaveRoomTapped() {
408-
// Sửa chỉ cần gọi hàm leave thôi
409-
print("========== leaveRoomTapped");
410-
411-
_room.leave(allClient: true).then((value) {
412-
print("========== Leave room: " + value.toString());
413-
clearDataEndDismiss();
420+
_room.leave(allClient: false).then((result) {
421+
if (result['status']) {
422+
if (_sharingScreen) {
423+
createForegroundServiceNotification();
424+
}
425+
clearDataEndDismiss();
426+
}
414427
});
415-
416-
// _room.unpublish(_localTrack).then((result) {
417-
// if (result['status']) {
418-
// _localTrack.close().then((value) {
419-
// if (result['status']) {
420-
// _room.leave(allClient: false).then((value) {
421-
// clearDataEndDismiss();
422-
// });
423-
// }
424-
// });
425-
// }
426-
// });
427428
}
428429

429430
void clearDataEndDismiss() {
430-
_room.destroy();
431+
if (_room != null) {
432+
_room.destroy();
433+
}
431434
Navigator.pop(context);
432435
}
433436
}

0 commit comments

Comments
 (0)