initLocalMediaStream method

Future<MediaStream> initLocalMediaStream()
inherited

Implementation

Future<MediaStream> initLocalMediaStream() {
  if (_initLocalStreamCompleter != null) {
    return _initLocalStreamCompleter!.future;
  }

  _initLocalStreamCompleter = Completer<MediaStream>();

  _createStream(startScreenSharing).then((mediaStream) async {
    localStream?.getTracks().forEach((track) async {
      await track.stop();
    });
    await localStream?.dispose();

    localStream = mediaStream;

    this.onLocalStreamReceived?.call(localStream!);

    _initLocalStreamCompleter?.complete(localStream);
  }).catchError((onError) {
    _initLocalStreamCompleter?.completeError(onError);
  });

  return _initLocalStreamCompleter!.future.whenComplete(() {
    _initLocalStreamCompleter = null;
  });
}