decodeStream<T> method
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;
}