-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbroadcast_streams.dart
More file actions
69 lines (53 loc) · 1.39 KB
/
broadcast_streams.dart
File metadata and controls
69 lines (53 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import 'dart:async';
class Cook {
void prepareOrder(newOrder) {
print("preparing $newOrder");
}
}
class Order {}
class Burger extends Order {}
class Fries extends Order {}
class Fruit extends Order {}
class BurgerStand {
StreamController<Order> _controller = new StreamController.broadcast();
Cook grillCook = new Cook();
Cook fryCook = new Cook();
Cook fruitCook = new Cook();
Stream get onNewFryOrder =>
_controller.stream.where((Order order) {
print("Fries");
return order is Fries;
});
Stream get onNewFruitOrder =>
_controller.stream.where((Order order) {
print("Fruit");
return order is Fruit;
});
Stream get onNewBurgerOrder =>
_controller.stream.where((Order order){
print("Burger");
return order is Burger;
});
void deliverOrderToCook() {
print("Chuyen den nguoi nau");
onNewBurgerOrder.listen((newOrder) {
grillCook.prepareOrder(newOrder);
});
onNewFryOrder.listen((newOrder) {
fryCook.prepareOrder(newOrder);
});
onNewFruitOrder.listen((newOrder) {
fruitCook.prepareOrder(newOrder);
});
}
void newOrder(Order order) {
print("Them orrder");
_controller.add(order);
}
}
main() {
var burgerStand = new BurgerStand();
burgerStand.deliverOrderToCook();
burgerStand.newOrder(new Burger());
// burgerStand.newOrder(new Fries());
}