getMediaStream method
Sets up a broadcast stream for receiving incoming media share change events.
Returns a broadcast Stream which emits events to listeners as follows:
Errors occurring during stream activation or deactivation are reported
through the FlutterError
facility. Stream activation happens only when
stream listener count changes from 0 to 1. Stream deactivation happens
only when stream listener count changes from 1 to 0.
If the app was started by a link intent or user activity the stream will
not emit that initial one - query either the getInitialMedia
instead.
Implementation
Stream<List<SharedFile>> getMediaStream() {
if (_streamMedia == null) {
final stream =
_eChannelMedia.receiveBroadcastStream("sharing").cast<String?>();
_streamMedia = stream.transform<List<SharedFile>>(
StreamTransformer<String?, List<SharedFile>>.fromHandlers(
handleData: (String? data, EventSink<List<SharedFile>> sink) {
if (data == null) {
sink.add([]);
} else {
final encoded = jsonDecode(data);
sink.add(encoded
.map<SharedFile>((file) => SharedFile.fromJson(file))
.toList());
}
},
),
);
}
return _streamMedia!;
}