publish method

dynamic publish({
  1. required RTCVideoRenderer localRenderer,
})

Implementation

publish({required RTCVideoRenderer localRenderer}) async {
  Completer completer = Completer();
  try {
    if (_state == CallState.publishState ||
        _state == CallState.connectState) {
      completer.completeError({'error': 'Invalid request, Already started'});
      return;
    }
    if (_state != CallState.activeState) {
      completer.completeError(
          {'error': 'The state that cannot publish, state $_state'});
      return;
    }
    if (_roomType != RoomType.videoroom.value &&
        _roomType != RoomType.webinar.value) {
      completer.completeError(
          {'error': 'The room type that is not supported, $_roomType'});
      return;
    }
    _state = CallState.publishState;
    var publishResult = await _videoPublisher?.publish(localRenderer);
    _state = CallState.connectState;
    _videoPublishFlag = true;
    var userResult = IResponsePublish(publishResult).toMap();
    completer.complete(userResult);
    return completer.future;
  } catch (error) {
    completer.completeError(error);
  }
}