Dart Stream的简单使用

116 阅读1分钟

注: 本文是基于GetX的使用

Stream分单订阅流和广播流

1.单订阅流

通过创建StreamController进行控制器的初始化,拿到stream流对象并进行监听

1.创建StreamController

final StreamController<String> streamController = StreamController<String>();

2.创建流通道

StreamSink<String> get sink => streamController.sink;

3.向流中发送数据

当我们发送了一次数据之后,再次调用该方法就会报错, 这就是单订阅流,下面的广播流就不会

void sendData(String data) {
  sink.add('data coming');
  printInfo(info: 'sendData is called!');
}

4.关闭Stream

@override
void onClose() {
  streamController.close();
  sink.close();
  super.onClose();
}

2.广播流

1.创建StreamController

final StreamController<String> streamController = StreamController<String>.broadcast();

2.开启监听

@override
void onInit() {
  streamController.stream.listen((event) {
    log('stream listener: $event');
  });
  super.onInit();
}

3.发送数据

void sendData(String data) {
  streamController.sink.add('data ');
  printInfo(info: 'sendData is called!');
}

4.关闭

@override
void onClose() {
  streamController.close();
  streamController.sink.close();
  super.onClose();
}