title | description | type |
---|---|---|
StreamBuilder |
控件介绍 |
widgets |
StreamBuilder组件用于异步接收数据更新组件,与FutureBuilder不同的地方在于StreamBuilder可以接收多个异步操作。
使用StreamBuilder首先需要构建一个Stream,我们可以使用StreamController,用法如下:
StreamController<String> _streamController;
@override
void initState() {
_streamController = StreamController<String>();
...
}
StreamBuilder的用法如下:
StreamBuilder(
stream: _streamController.stream,
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
}
return Text('未收到数据');
},
)
注意最后关闭:
@override
dispose() {
super.dispose();
_streamController.close();
}
通过点击按钮发送数据:
RaisedButton(
child: Text('发送数据'),
onPressed: () {
_streamController.add('老孟,一枚有态度的程序员');
},
)
此时就会构建新的文本。