future가 하나의 데이터를 .then() 으로 전달받았다면
stream 은 연속된 데이터를 .listen() 을 통해 비동기적으로 처리할 수 있다
스트리밍 서비스의 동작 방식과 같다
stream 은 구독자 패턴(Observer pattern) 이다
관찰 대상을 구독하여 변화 발생 시 구독자에게 변화를 알린다
stream 을 통해 하나의 데이터 전송을 하는 경우
main() {
print('start')
var stream = Stream.value(100).listen((dynamic x) => print('getDate: $x'));
print('end');
}
stream 에 직접 이벤트를 지정하여 일회성이 아닌 지속적 통신을 할 수 있다
기본적으로 stream 에 대한 구독자는 하나만 등록할 수 있다
2개 이상의 구독자를 연결할 때는 StreamController.broadcast();
import 'dart: async';
main() {
print('start')
StreamController streamControl = StreamController.broadcast();
StreamCtrl.stream.listen((x) => print('listen 1 = $x'));
StreamCtrl.stream.listen((x) => print('listen 2 = $x'));
streamControl.add(100);
streamControl.add(200);
streamControl.add(300);
streamControl.close();
print('end');
}