getMediaStream method

Stream<List<SharedFile>> getMediaStream()

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!;
}