《Flutter 控件大全》第九十:StreamBuilder

  • 如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。
  • 同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。
  • Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。

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('老孟,一枚有态度的程序员');
  },
)

此时就会构建新的文本。

发布了269 篇原创文章 · 获赞 224 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/mengks1987/article/details/105311030