但是,我使用它从消防局数据库获取消息列表,这给我带来了一个错误:
Fltter:抛出了以下NoSuchMethodError构建:Fltter:类‘QuerySnapshot’没有实例getter‘Document’。颤振:接收者:查询快照的实例,颤音:尝试调用:文档
我使用的代码是:
StreamBuilder(
stream: Firestore.instance
.collection('messages')
.document(groupId)
.collection(groupId)
.orderBy('timestamp', descending: true)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
} else {
listMessage = snapshot.data.documents;
return ListView.builder(
padding: EdgeInsets.all(10.0),
itemBuilder: (context, index) =>
buildItem(index, snapshot.data.document[index]),
itemCount: snapshot.data.documents.length,
reverse: true,
controller: scrollController,
);
}
},
),
我刚开始使用FiRESTORE,这里有人能帮忙吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你遇到的错误是因为在Flutter中使用Firebase Firestore时,QuerySnapshot
类没有直接的documents
属性或方法了。从Firestore的Flutter插件的一个较新版本开始,数据是以QuerySnapshot.docs
的形式提供的,而不是之前的.documents
。
为了修复你的代码,请将涉及到documents
的地方改为使用.docs
,同时对于每个文档项,你应该直接从snapshots
数据中通过索引获取,而不是尝试调用不存在的document
方法。下面是修改后的代码示例:
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('messages')
.document(groupId)
.collection(groupId)
.orderBy('timestamp', descending: true)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
} else {
List<DocumentSnapshot> documents = snapshot.data.docs; // 修改这里
return ListView.builder(
padding: EdgeInsets.all(10.0),
itemBuilder: (context, index) =>
buildItem(index, documents[index]), // 修改这里
itemCount: documents.length,
reverse: true,
controller: scrollController,
);
}
},
),
这样修改后,你的代码应该能正确地从Firestore获取数据并构建列表视图了。记得检查你的buildItem
函数是否也需要根据DocumentSnapshot
的变更进行调整。