File tree 1 file changed +28
-14
lines changed
1 file changed +28
-14
lines changed Original file line number Diff line number Diff line change 1
1
import 'dart:async' ;
2
2
3
- void main (){
4
- Stream numberStream = NumberGenerator ().getStream.asBroadcastStream ();
3
+ void main () {
4
+ final numberGenerator = NumberGenerator ();
5
+ final numberStream = numberGenerator.getStream.asBroadcastStream ();
5
6
//! broadcast -> can handle multiple subscribers
6
7
7
8
StreamSubscription sub1 = numberStream.listen ((event) {
8
- print (event);
9
+ print ('sub1: $ event ' );
9
10
});
10
- }
11
-
12
- class NumberGenerator {
13
- int _counter = 0 ;
14
11
15
- StreamController <int > _controller = StreamController <int >();
12
+ StreamSubscription sub2 = numberStream.listen ((event) {
13
+ print ('sub2: ${event * event }' );
14
+ });
16
15
17
- Stream <int > get getStream => _controller.stream;
16
+ Future .delayed (const Duration (seconds: 5 ), () {
17
+ sub1.cancel ();
18
+ sub2.cancel ();
19
+ });
20
+ }
18
21
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);
22
27
_counter++ ;
23
28
});
24
29
25
- Future .delayed (Duration (seconds: 10 ), () => timer.cancel ());
30
+ Future .delayed (const Duration (seconds: 10 ), () {
31
+ timer.cancel ();
32
+ _controller.close ();
33
+ });
26
34
}
27
- }
35
+
36
+ int _counter = 0 ;
37
+
38
+ final StreamController <int > _controller = StreamController <int >();
39
+
40
+ Stream <int > get getStream => _controller.stream;
41
+ }
You can’t perform that action at this time.
0 commit comments