-
Notifications
You must be signed in to change notification settings - Fork 72
/
agora_client.dart
70 lines (59 loc) · 2.32 KB
/
agora_client.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import 'dart:async';
import 'package:agora_uikit/controllers/session_controller.dart';
import 'package:agora_uikit/models/agora_channel_data.dart';
import 'package:agora_uikit/models/agora_connection_data.dart';
import 'package:agora_uikit/models/agora_event_handlers.dart';
import 'package:agora_rtc_engine/rtc_engine.dart';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
/// [AgoraClient] is the main class in this UIKit. It is used to initialize our [RtcEngine], add the list of user permissions, define the channel properties and use extend the [RtcEngineEventHandler] class.
class AgoraClient {
static const MethodChannel _channel = MethodChannel('agora_uikit');
static Future<String> get platformVersion async {
final String version = await _channel.invokeMethod('getPlatformVersion');
return version;
}
Future<List<int>> get users async {
final List<int> version =
_sessionController.value.users.map((e) => e.uid).toList();
return version;
}
// This is our "state" object that the UI Kit works with
final SessionController _sessionController = SessionController();
SessionController get sessionController {
return _sessionController;
}
AgoraClient({
required AgoraConnectionData agoraConnectionData,
required List<Permission> enabledPermission,
AgoraChannelData? agoraChannelData,
AgoraEventHandlers? agoraEventHandlers,
}) {
_initAgoraRtcEngine(
agoraConnectionData: agoraConnectionData,
enabledPermission: enabledPermission,
agoraChannelData: agoraChannelData,
agoraEventHandlers: agoraEventHandlers,
);
}
Future<void> _initAgoraRtcEngine({
required AgoraConnectionData agoraConnectionData,
required List<Permission> enabledPermission,
AgoraChannelData? agoraChannelData,
AgoraEventHandlers? agoraEventHandlers,
}) async {
try {
_sessionController.initializeEngine(
agoraConnectionData: agoraConnectionData,
);
} catch (e) {
print("Error occured while initializing Agora RtcEngine: $e");
}
await enabledPermission.request();
_sessionController.createEvents(agoraEventHandlers);
if (agoraChannelData != null) {
_sessionController.setChannelProperties(agoraChannelData);
}
_sessionController.joinVideoChannel();
}
}