인프런 커뮤니티 질문&답변

뭐하지이름님의 프로필 이미지
뭐하지이름

작성한 질문수

[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

Dart #4 비동기 프로그래밍 (Async Programming)

안녕하세요. stream관련해서 질문드립니다.

작성

·

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이 반환된다고 생각하시면 될 것 같습니다.

감사합니다!

답변주셔서 감사합니다!!

뭐하지이름님의 프로필 이미지
뭐하지이름

작성한 질문수

질문하기