Firebase Flatter/Firestore:Class';QuerySnapshot';没有实例getter';文件';
我有一个应用程序,我想从Firestore数据库检索uid文档中表示的消息,如下所述,这些消息存储如下: 聊天室->聊天室ID->聊天->uid->消息 但我收到了这个错误: 生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:_StreamBuilderBaseState#56cb5):类“QuerySnapshot”没有实例 getter“文档”。接收者:“QuerySnapshot”的实例已尝试 电话:文件 导致错误的相关小部件是:StreamBuilder file:///Users/ahmedhussain/Downloads/khamsat/Client%20Apps/HPX-KSA/hpx_KSA/lib/Screens/messages.dart:21:12 引发异常时,这是堆栈: #0 Object.noSuchMethod(省道:核心补片/对象补片。省道:53:5) #1 _MessagesState.chatRoomList。(软件包:hpxksa/屏幕/消息。dart:25:38) 这是我的密码:Firebase Flatter/Firestore:Class';QuerySnapshot';没有实例getter';文件';,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我有一个应用程序,我想从Firestore数据库检索uid文档中表示的消息,如下所述,这些消息存储如下: 聊天室->聊天室ID->聊天->uid->消息 但我收到了这个错误: 生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:_StreamBuilderBaseState#56cb5):类“QuerySnapshot”没有实例 getter“文档”。接收者:“QuerySnapshot”的实例已尝试 电话:文件 导致错误的相关小部件是:StreamBuild
class _MessagesState extends State<Messages> {
Stream chatRoomsStream;
Widget chatRoomList(){
return StreamBuilder(
stream: chatRoomsStream,
builder: (context, snapshot){
return snapshot.hasData ? ListView.builder(
itemCount: snapshot.data.document.length,
itemBuilder: (context, index){
return ChatRoomTile(
username: snapshot.data.documents[index].data["chatRoomId"]
.toString().replaceAll("_", "").replaceAll(Constants.myName, "replace"),
chatRoomId:snapshot.data.documents[index].data["chatRoomId"]
);
}) : Container();
}
);
}
getUserInfogetChats() {
DatabaseService().getChatRooms(Constants.myName).then((value) {
setState(() {
chatRoomsStream = value;
});
});
}
@override
void initState() {
getUserInfogetChats();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: chatRoomList(),
);
}
}
class ChatRoomTile extends StatelessWidget {
final String username;
final String chatRoomId;
ChatRoomTile({this.username, this.chatRoomId});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: (){
Navigator.push(context, MaterialPageRoute(builder: (context)=>Conversation(chatRoomId: chatRoomId,)));
},
child: Container(
color: Colors.black26,
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 16),
child: Row(
children: <Widget>[
Container(
height: 40,
width: 40,
alignment: Alignment.center,
decoration: BoxDecoration(
color: kPrimaryColor,
borderRadius: BorderRadius.circular(40),
),
child: Text("${username.substring(0,1).toUpperCase()}"),
),
SizedBox(width: 8,),
Text(username),
],
),
),
);
}
}
您收到的错误非常清楚问题是什么
QuerySnapshot
没有文档
属性。您可能打算使用该属性,这与您尝试使用列表视图
更为一致
将
snapshot.data.document
的实例更改为snapshot.data.documents
将解决此特定问题。您收到的错误非常清楚问题所在QuerySnapshot
没有文档
属性。您可能打算使用该属性,这与您尝试使用列表视图
更为一致
return StreamBuilder(
stream: chatRoomStream,
builder: (context, snapshot) {
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (context, index) {
return ChatRoomTile(
**snapshot.data.docs[index].data()['chatRoomId']**);
},
)
: Container();
},
);
将
snapshot.data.document
的实例更改为snapshot.data.documents
将解决此特定问题。您的问题是什么?此错误:类“QuerySnapshot”没有实例获取程序“document”。接收者:“QuerySnapshot”的实例尝试调用:document这不是问题。你想完成什么?整个问题只是一条错误消息和代码。我正试图根据文档ID从firestore检索数据。您能否进一步说明您如何在firestore中构建数据?您的问题是什么?此错误:类“QuerySnapshot”没有实例获取器“document”。接收者:“QuerySnapshot”的实例尝试调用:document这不是问题。你想完成什么?整个问题只是一条错误消息和代码。我正试图根据文档ID从firestore检索数据。您能否进一步说明您在firestore中如何构建数据?这可能是完全相同的错误吗<代码>文档不应存在于代码中的任何位置。请重新发布此错误。以下是我在将其更改为docs后收到的内容:“QuerySnapshot”类没有实例getter“docs”。接收者:“QuerySnapshot”的实例尝试调用:docs您正在使用哪个包<代码>云商店?或者firebase
?假设您使用的是cloud\u firestore
,我已经编辑了我的答案。这是一个简单的打字错误。怎么会是完全相同的错误呢<代码>文档不应存在于代码中的任何位置。请重新发布此错误。以下是我在将其更改为docs后收到的内容:“QuerySnapshot”类没有实例getter“docs”。接收者:“QuerySnapshot”的实例尝试调用:docs您正在使用哪个包<代码>云商店?或者firebase
?假设您使用的是cloud\u firestore
,我已经编辑了我的答案。这是一个简单的打字错误。cloud_FireStore将“文档”更改为“文档”,并将“数据['chatRoomId']”更改为“数据()['chatRoomId']”。虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请您在回答中添加解释,并说明适用的限制和假设。将“文档”更改为“文档”,并将“数据['chatRoomId']”更改为“数据()['chatRoomId']”,虽然此代码可能会解决问题,但如何以及为什么解决此问题会真正有助于提高您的帖子质量,而且可能会得到更多的支持票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
return StreamBuilder(
stream: chatRoomStream,
builder: (context, snapshot) {
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (context, index) {
return ChatRoomTile(
**snapshot.data.docs[index].data()['chatRoomId']**);
},
)
: Container();
},
);