在我的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
观看同一视频流是一种好习惯吗?