decodeStream<T> method

Stream<T> decodeStream<T>({
  1. Decodable<T>? using,
})

Decodes a Stream of T using the provided Decodable.

Implementation

Stream<T> decodeStream<T>({Decodable<T>? using}) {
  final controller = StreamController<T>();
  whatsNext((type) {
    if (type case DecodingType.iterated || DecodingType.list) {
      decodeIterated((decoder) {
        decoder.decodeObject((v) {
          controller.add(v);
        }, using: using);
      }, done: () {
        controller.close();
      });
    } else {
      decodeEager((decoder) async {
        await controller.addStream(decoder.decodeStream<T>(using: using));
        controller.close();
      });
    }
  });
  return controller.stream;
}