Skip to content

Commit e95d439

Browse files
author
Max Steffen
committed
add streams to main
1 parent 80feb21 commit e95d439

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

1_dart/20_streams.dart

+28-14
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,41 @@
11
import 'dart:async';
22

3-
void main(){
4-
Stream numberStream = NumberGenerator().getStream.asBroadcastStream();
3+
void main() {
4+
final numberGenerator = NumberGenerator();
5+
final numberStream = numberGenerator.getStream.asBroadcastStream();
56
//! broadcast -> can handle multiple subscribers
67

78
StreamSubscription sub1 = numberStream.listen((event) {
8-
print(event);
9+
print('sub1: $event');
910
});
10-
}
11-
12-
class NumberGenerator {
13-
int _counter = 0;
1411

15-
StreamController<int> _controller = StreamController<int>();
12+
StreamSubscription sub2 = numberStream.listen((event) {
13+
print('sub2: ${event * event}');
14+
});
1615

17-
Stream<int> get getStream => _controller.stream;
16+
Future.delayed(const Duration(seconds: 5), () {
17+
sub1.cancel();
18+
sub2.cancel();
19+
});
20+
}
1821

19-
NumberGenerator(){
20-
final timer = Timer.periodic(Duration(seconds: 1), (timer) {
21-
_controller.sink.add(_counter);
22+
class NumberGenerator {
23+
NumberGenerator() {
24+
final timer = Timer.periodic(const Duration(seconds: 1), (timer) {
25+
_controller.add(_counter);
26+
// _controller.sink.add(_counter);
2227
_counter++;
2328
});
2429

25-
Future.delayed(Duration(seconds: 10), () => timer.cancel());
30+
Future.delayed(const Duration(seconds: 10), () {
31+
timer.cancel();
32+
_controller.close();
33+
});
2634
}
27-
}
35+
36+
int _counter = 0;
37+
38+
final StreamController<int> _controller = StreamController<int>();
39+
40+
Stream<int> get getStream => _controller.stream;
41+
}

0 commit comments

Comments
 (0)