lang/dart

Dart Async, Stream, StreamController, StreamTransformer

C/H 2020. 9. 11. 17:44

StreamController, StreamTransformer.fromHandlers

import 'dart:async';

class Cake {}
class Order {
  String type;
  Order(this.type);
}

void main() {
  final controller = new StreamController();

  final order = new Order('banana');
  final baker = new StreamTransformer.fromHandlers(handleData: (cakeType, sink){
    if( cakeType == 'chocolate') {
      sink.add(new Cake());
    } else {
      sink.addError('I cant bake that type!!!');
    }
  });

  controller.sink.add(order);
  controller.sink.add(new Order('apple'));
  controller.sink.add(new Order('chocolate'));

  controller.stream
    .map((order)=>order.type)
    .transform(baker)
    .listen(
      (cake) => print('Heres your cake $cake'),
      onError: (err) => print(err),
    );
}
반응형

'lang > dart' 카테고리의 다른 글

Flutter BLoC, Scoped Instances  (0) 2020.09.16
Flutter BLoC, Single Global Instance  (0) 2020.09.15
Flutter BLoC  (0) 2020.09.14
Dart BLoC Pattern  (0) 2020.09.11
Dart onClick, timeout, take, where, onDone  (0) 2020.09.11