getScreenShareStream function

ScreenShareState getScreenShareStream(
  1. MediaStreamsParameters parameters
)

The active screen share, local or remote.

Kept off the camera path on purpose: a screen must never be mirrored, and it wants BoxFit.contain rather than cover — cropping a shared screen hides the content someone is pointing at.

The remote stream is not enabled-gated. A remote screen track is muted and may report disabled until its first frame arrives, and gating it there is what leaves a viewer staring at a black rectangle.

Implementation

ScreenShareState getScreenShareStream(MediaStreamsParameters parameters) {
  if (parameters.shareScreenStarted) {
    final local = parameters.localStreamScreen;
    if (_hasLiveTrack(local, 'video')) {
      return ScreenShareState(
          stream: local, isLocal: true, name: parameters.member);
    }
  }

  final screenId = parameters.screenId;
  if (screenId.isEmpty) return const ScreenShareState();

  for (final entry in [
    ...parameters.allVideoStreams,
    ...parameters.oldAllStreams
  ]) {
    if (entry.producerId != screenId) continue;
    final stream = entry.stream;
    if (!_hasLiveTrack(stream, 'video', requireEnabled: false)) continue;
    return ScreenShareState(
      stream: stream,
      isLocal: false,
      name: entry.name ?? '',
    );
  }
  return const ScreenShareState();
}