initialize method

Future<void> initialize()

Implementation

Future<void> initialize() async {
  if (_initialized) {
    return;
  }

  try {
    await _sessionController.initializeEngine(
        agoraConnectionData: agoraConnectionData);
  } catch (e) {
    log("Error while initializing Agora RTC SDK: $e",
        level: Level.error.value);
  }

  if (agoraConnectionData.rtmEnabled) {
    try {
      await _sessionController.initializeRtm(
          agoraRtmClientEventHandler ?? AgoraRtmClientEventHandler());
    } catch (e) {
      log("Error while initializing Agora RTM SDK. ${e.toString()}",
          level: Level.error.value);
    }
  }

  if (agoraChannelData?.clientRoleType ==
          ClientRoleType.clientRoleBroadcaster ||
      agoraChannelData?.clientRoleType == null) {
    await _sessionController.askForUserCameraAndMicPermission();
  }
  if (enabledPermission != null) {
    await enabledPermission!.request();
  }

  _sessionController.createEvents(
    agoraRtmChannelEventHandler ?? AgoraRtmChannelEventHandler(),
    agoraEventHandlers ?? AgoraRtcEventHandlers(),
  );

  if (agoraChannelData != null) {
    _sessionController.setChannelProperties(agoraChannelData!);
  }

  await _sessionController.joinVideoChannel();
  _initialized = true;
}