注: 本文是基于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();
}