'How to convert a stream to another type without using map?

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.



Solution 1:[1]

  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();
     }
    }
    

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1