微信交流群

# StreamBuilder

StreamBuilder组件用于异步接收数据更新组件,与FutureBuilder不同的地方在于StreamBuilder可以接收多个异步操作。

使用StreamBuilder首先需要构建一个Stream,我们可以使用StreamController,用法如下:

StreamController<String> _streamController;


  void initState() {
    _streamController = StreamController<String>();
    ...
  }

1
2
3
4
5
6
7
8

StreamBuilder的用法如下:

StreamBuilder(
  stream: _streamController.stream,
  builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
    if (snapshot.hasData) {
      return Text(snapshot.data);
    }
    return Text('未收到数据');
  },
)
1
2
3
4
5
6
7
8
9

注意最后关闭:

@override
dispose() {
  super.dispose();
  _streamController.close();
}
1
2
3
4
5

通过点击按钮发送数据:

RaisedButton(
  child: Text('发送数据'),
  onPressed: () {
    _streamController.add('老孟,一枚有态度的程序员');
  },
)
1
2
3
4
5
6

此时就会构建新的文本。