publish method
dynamic
publish({
- 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);
}
}