我遇到了firebase fireStore的问题。有一个流构建器从项目集合中阅读数据。在项目集合中有一些字段和另一个集合。我没有任何字段的问题,问题是集合。如何访问流构建器中的这些集合?
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream: CallApi().finalReference(reference: widget.finalReference),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(child: Text('snapshot Error:${snapshot.error}'));
}
if (snapshot.hasData) {
var snapData = snapshot.data!.docs;
if (kDebugMode) {
print(snapData.length);
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: ListView.builder(
itemCount: snapData.length,
itemBuilder: (BuildContext context, int index) {
return ListItem(
mTitle: snapData[index].get('title') ?? '',
mSubTitle: snapData[index].get('address') ?? 'empty',
mPrice: snapData[index].get('price') ?? '',
mImageUrl: snapData[index].get('gallery')[0],
mOnTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailsPage(
adsTitle: snapData[index].get('title'),
adsSubTitle: snapData[index].get('subTitle'),
gallery: snapData[index].get('gallery'),
specFTitle: snapData[index].get('gallery'),
),
),
);
},
);
},
),
),
],
);
}
return const Center(child: CircularProgressIndicator());
},
),
这里是火线
1条答案
按热度按时间sbtkgmzw1#
从Firestore阅读数据是一个浅层操作。当你读取一个文档时,它的子集合不会被自动读取。
因此,如果您想从当前文档的子集中获取数据,则必须为此启动一个新的读取操作。如果您想在UI中显示该数据,则可以为此使用一个新的嵌套
StreamBuilder
或FutureBuilder
。