작성
·
248
0
stream강의 처음코드에선 controller라는 변수에 streamcontroller()를 할당해주고 stream이라는 변수에 controller.stream을 할당해주고나서 stream을 사용할수있었는데요.
두번쨰 calculate 코드에선 해당작업을 하지않고도 listen을 할수있더라고요. 이 이유는 무엇인가요??
또한 첫코드에선 broadcaststream을 사용해야 여러번 리슨할수있다고 하셨는데 두번째 calculate코드에서 제가 임의로 playcalculate().listen((val) {print('$val');}); 스테이트먼트를 두개만들어서 시험해봤을땐 broadcaststream과 같은 기능을 하더군요. 이는
Stream<int> playasync()async*{
yield* claculate(1);
yield* claculate(1000);
}
처럼 stream<>데이터타입을 가진 함수를 만들게되면 dynamic처럼 Single subscription streams와 Broadcas streams 어떤 종류로 써도 무방하게 만들어진것인가요??
답변 1
0
안녕하세요!
StreamController의 정이 자체가 "A controller with a stream that supports only one single subscriber." 즉, 한번 리스닝이 가능한 스트림을 반환해주는 컨트롤러입니다.
StreamController.broadcaset 팩토리 컨스트럭터를 사용할경우 다릅니다. "A controller where stream can be listened to more than once." 즉, 여러번 리스닝이 가능한 스트림을 반환해주는 컨트롤러입니다.
저희가 함수를 선언해서 반환해주는 Stream의 경우 broadcast가 가능한 stream이 반환된다고 생각하시면 될 것 같습니다.
감사합니다!
답변주셔서 감사합니다!!