Search
▪️

Reactive Programming with Dart

Stream : A source of asynchronous data events
import 'dart:async'를 통해 비동기 Stream 관련 작업들을 편리하게 이용 가능하다.
Stream을 주고 받기 위해서는 Controller가 필요하다.
Stream을 보낼 때는 controller.sink.add()을 통해 Stream 추가한다.
Stream을 받을 때는 controller.stream.map((item) {})으로 받는다.
Stream을 받고 검증을 할 때는 StreamTransformer.fromHandlers(handleData: (type, sink) {})으로 검증한다.
검증 Transformer를 이와 같이 구현 후에는 Stream 수신 모듈 뒤에 붙여준다.
이전에 작성한 것에 transform을 붙여 controller.stream.map((item) {}).transform()로 만들고 transform 메소드 안에 검증 모듈을 넣는다.
검증이 되면 sink.add()를, 안 되면 sink.addError()을 호출한다.
또한 해당 Stream의 검증이 된 것들에 대해서 이용하려면 sink에 성공적으로 추가 되었다는 것을 알아야 하므로 위의 작성된 모듈에 listen을 붙인다.
controller.stream.map((item) {}).transform().listen((item) {}, onError: (error) {})