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()方法
本文介绍如何在 Flutter 中使用 Stream 和 StreamController 进行数据监听与传递。覆盖了 Stream 的创建、监听、添加数据及 StreamBuilder 的用法。适用于希望了解 Flutter 异步编程技巧的开发者。
1238

被折叠的 条评论
为什么被折叠?



