我正在尝试创建一个嵌套的ListView,但是不知道是否可以在嵌套视图中组合2个streambuilder,因为它不起作用。在带有子集合查询的第二个StreamBuilder中,似乎没有数据返回,我也不知道为什么。
当我对文档ID进行硬编码时,我没有收到任何错误,但查询似乎仍未返回任何数据。
有人知道,如何使用streambuilders和Firestore构建嵌套的listview吗?
List<Widget> buildStreamedListView() {
return [ StreamBuilder(
stream: Firestore.instance.collection('course')
.document(widget.data.documentID)
.collection('section')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text("Loading...");
return Expanded(child: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
//return buildListItem(context, snapshot.data.documents[index]);
return Card(
child: ExpansionTile(
title: Text(snapshot.data.documents[index]['name']),
children: <Widget>[
StreamBuilder(
stream: Firestore.instance.collection('course')
.document(widget.data.documentID)
.collection('section')
.document('4CjAZEQ416NYpu3ra3OE')
.collection('page')
.snapshots(),
builder: (context, snap) {
return ListView.builder(
shrinkWrap: true,
itemCount: snap.data.documents.length,
itemBuilder: (context, index) {
return Text('Hello you');
}
);
}
),
],
),
);
}
));
},
)];
}
答案 0 :(得分:0)
出现奇怪错误的原因是,在第二个构建器函数中,我没有添加以下代码:
if (!snapshot.hasData) return const Text("Loading...");
一旦我添加了它,它就会起作用。似乎数据还没有准备好,因此无法读取,从而导致错误。
答案 1 :(得分:0)
请注意还要在嵌套的snap.hasData()
中测试StreamBuilder
。