Firebase查询报错Class '_JsonDocumentSnapshot'无docs getter解决办法
报错原因
- 你当前通过
doc('${auth.currentUser.uid}').snapshots()监听的是interest集合下的单个文档,返回的快照类型是DocumentSnapshot,仅集合查询返回的QuerySnapshot才具备docs属性,调用不存在的docs属性触发了本次报错。
修正方案
假设你目标uid文档中存储列表的字段名为interest_list(可替换为你实际的字段名),修改代码如下:
StreamBuilder( stream: firestore .collection('interest') .doc('${auth.currentUser.uid}') .snapshots(), builder: (context, snapshot) { if (!snapshot.hasData) { return const Center( child: CircularProgressIndicator(), ); } // 先获取当前文档快照 DocumentSnapshot docSnapshot = snapshot.data as DocumentSnapshot; // 判断文档是否存在 if (!docSnapshot.exists) { return const Center(child: Text("暂无兴趣数据")); } // 取出文档中存储的列表字段,替换为你实际的列表字段名 List interestList = docSnapshot.get('interest_list') ?? []; return ListView.builder( itemCount: interestList.length, itemBuilder: (context, index) { // 这里直接使用interestList[index]渲染对应内容即可 return Container(); }); }),
关键修改说明
- 替换了原代码中直接读取
docs的错误逻辑,改为先从DocumentSnapshot中读取文档字段 - 增加了文档存在性判断,避免空文档引发的后续异常
- 直接取出文档内的列表字段作为ListView的数据源
内容的提问来源于stack exchange,提问作者Gbenga B Ayannuga
相关产品推荐
相关产品推荐

