列出来自StreamBuilder的长度?

时间:2019-01-19 20:54:53

标签: dart flutter

在我的flutter应用程序的标题中,我想显示一个Chip,并在正文中显示列表中的项目数。正文的构建方法是使用StreamBuilder创建列表。

问题在于,列表的长度要等到AppBar构建完成并且StreamBuilder完成构建列表之后才能知道。

由于无法在构建函数中调用setState(),因此在AppBar完成构建列表之后,如何获取StreamBuilder中的值进行更新?

我正在研究this example。这是代码段:

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Streams'),
        elevation: 1.0,
      ),
      body: Container(
        child: _buildContent(),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: _createCounter,
      ),
    );
  }

  Widget _buildContent() {
    return StreamBuilder<List<Counter>>(
      stream: stream,
      builder: (context, snapshot) {
        return ListItemsBuilder<Counter>(
          items: snapshot.hasData ? snapshot.data : null,
          itemBuilder: (context, counter) {
            return CounterListTile(
              key: Key('counter-${counter.id}'),
              counter: counter,
              onDecrement: _decrement,
              onIncrement: _increment,
              onDismissed: _delete,
            );
          },
        );
      },
    );
  }

我找到了解决方法,可以通过创建第二个StreamBuilder来更新Chip中的AppBar。让多个StreamBuilder观看同一视频流是一种好习惯吗?

0 个答案:

没有答案