getScreenShareStream function
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();
}