Skip to content

Instantly share code, notes, and snippets.

@olostan
Created August 23, 2024 23:39
Show Gist options
  • Select an option

  • Save olostan/dfd880859c0fe4d773306e0b4a2a1c3a to your computer and use it in GitHub Desktop.

Select an option

Save olostan/dfd880859c0fe4d773306e0b4a2a1c3a to your computer and use it in GitHub Desktop.
Program finished
Waiting before generating 1
Generating 1
Waiting before generating 1:1
Waiting before generating 2
Generating 1:1
Listener got 1:1
Waiting before generating 1:2
Generating 2
Generating 1:2
Waiting before generating 3
Waiting before generating 2:1
Generating 2:1
Listener got 2:1
Waiting before generating 2:2
Generating 3
Generating 2:2
Waiting before generating 3:1
Generating 3:1
Listener got 3:1
Waiting before generating 3:2
Generating 3:2
Listener got 3:2
Waiting before generating 3:3
Generating 3:3
Listener got 3:3
import "dart:async";
import 'package:stream_transform/stream_transform.dart';
Stream<int> test() async* {
for (int c = 1; c <= 30; c++) {
print("Waiting before generating $c");
await Future.delayed(Duration(milliseconds: 300));
print("Generating $c");
yield c;
}
}
Stream<String> fromNumber(int n) async* {
for (int c = 1; c <= 3; c++) {
print("Waiting before generating $n:$c");
await Future.delayed(Duration(milliseconds: 200));
print("Generating $n:$c");
yield "$n:$c";
}
}
void main() async {
final counter = test();
final s1 = counter.take(3).switchMap(fromNumber);
s1.listen((v) {
print("Listener got $v");
});
print("Program finished");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment