Open feinstein opened 1 year ago
This code works just fine:
// prints: // 0 // Instance of '_MultiStream<int>' // 0 // 1 // Instance of '_MultiStream<int>' // 0 // 1 // 2 // Instance of '_MultiStream<int>' // 0 // 1 // 2 // 3 // flutter: Instance of '_MultiStream<int>' await for (final item in Stream.fromIterable(List.generate(4, (index) => Stream.fromIterable(List.generate(index + 1, (index) => index))))) { await for (final item2 in item) { print(item2); } print(item); }
Now if I use a groupBy it only runs once:
groupBy
// prints: // 0 await for (final item in Stream.fromIterable(List.generate(30, (index) => index)).groupBy((value) => value % 3)) { await for (final item2 in item) { print(item2); } print(item); }
If I remove the second await for I can see the stream emits 3 GroupedStream as expected.
await for
GroupedStream
The inner Stream of groupBy completes when the outer is complete. Currently, we should not use asyncExpand((s) => s or nested await for. It causes a death lock
asyncExpand((s) => s
This code works just fine:
Now if I use a
groupBy
it only runs once:If I remove the second
await for
I can see the stream emits 3GroupedStream
as expected.