1、stream
//创建Stream
Stream<String> _stream = Stream.fromFuture(getData());
//监听stream
StreamSubscription subscription = _stream.listen(onData, onError:onError, onDone:onDone);
// subscription.pause();
// subscription.resume();
// subscription.cancel();
Future<String> getData() async {
await Future.delayed(Duration(seconds: 2));
return 'stream data';
}
onData(String data) {
print(data);
}
onError(error) {
print(error);
}
onDone() {}
2、StreamController
StreamController<String> _streamControl = StreamController<String>();
_streamControl.stream.listen(onData, onError: onError, onDone: onDone);
// _streamControl.close();
//往stream里面添加数据
_streamControl.add(await getData());
3、使用Sink添加数据
//水槽 水池
Sink _sink=_streamControl.sink;
_sink.add(await getData());
4、可以有多个订阅的Stream
StreamController<String> _streamControl = StreamController.broadcast();
_streamControl.stream.listen(onData, onError: onError, onDone: onDone);
_streamControl.stream.listen(onData:onData2, onError: onError, onDone: onDone);
// _streamControl.close();
//往stream里面添加数据
_streamControl.add(await getData());
5、StreamBuilder
StreamBuilder(
stream: _streamControl.stream,
builder: ((context, snapshot) {
return Text('${snapshot.data}');
}));
StreamBuilder其实也就是内部分装了一下 数据变化的时候调用了setState()方法