Home > Back-end >  How to convert a stream to another type without using map?
How to convert a stream to another type without using map?

Time:05-07

I've this code:

Stream<int> get fooStream async* {
  barStream.listen((_) async* { 
    int baz = await getBaz();
    yield baz; // Does not work
  });  
}

How can I return Stream<int> from another stream?


Note: If I use map to transform the stream, then I'll have to return Stream<Future<int>>, but I want to return Stream<int>. I also don't feel like using rxdart pacakge for this tiny thing.

CodePudding user response:

  1. Use asyncMap.

    barStream.asyncMap((e) => getBaz())
    
  2. Use await for

    Stream<int> get fooStream async* {
     await for (final item in barStream) {
       yield await getBaz();
     }
    }
    
  • Related