我有一个应用程序,我想从Firestore数据库中检索uid文档中表示的消息,如下所述,这些消息存储如下:聊天室-
但我收到以下错误:
生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:\u StreamBuilderBaseState
导致错误的相关小部件是:StreamBuilderfile:///Users/ahmedhussain/Downloads/khamsat/Client应用程序/HPX-KSA/HPX\U KSA/库/屏幕/消息。dart:21:12引发异常时,这是堆栈:#0对象。noSuchMethod(dart:核心补丁/对象补丁。dart:53:5)#1 \u消息状态。聊天室列表。(包装:hpxksa/屏幕/消息。dart:25:38)
这是我的代码:
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),
],
),
),
);
}
}
下面是我的get函数,用于检索包含用户名的聊天:
getChatRooms(String username)async{
return await Firestore.instance.collection("ChatRoom").
where("users", arrayContains: username).
snapshots();
}
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();
},
);
您收到的错误非常清楚问题是什么。QuerySnapshot
没有文档
属性。您可能打算使用文档
属性,这与您尝试使用ListView
更一致。
更改快照的实例。数据文档到快照。数据文档将解决此特定问题。
生成了以下NoSuchMethodError:类“QuerySnapshot”没有实例方法“Call”。接收方:“QuerySnapshot”实例尝试调用:call() 抛出异常时,这是堆栈:#0object.nosuchmethod(dart:core-patch/object_patch.dart:51:5)#1_HomeKitchenListState.build。(包:pigeon/coo
我是从火神那里收取数据的,我有这个,我是火神的新手,我知道的不多,所以你能帮我吗? 错误是这样的:类'AsyncSnapshot'没有实例getter'docs'。接收器:'AsyncSnapshot'的实例尝试调用:docs
我的代码中有两个流,第一个是从朋友列表中获取用户ID,第二个流是使用ID列表在Firebase中搜索用户ID的文档。 这是火力恢复代码。 我不知道为什么会发生这种情况,因为我可以显示id列表。我曾尝试将更改为,但也会产生相同的错误。 编辑:
我正在遵循一个教程,试图创建一个水平的SingleChildScrollView,它包含带有产品描述的对象和带有两个小数的货币+价格标签。实现NumberFormat.Currency方法返回一个错误:NosuchMethodeRorr类“String”没有实例getter“is negal” 有人能帮助理解为什么它不拉“价格”价值吗?如果我对其进行硬编码,并为最终的双倍价格赋值=IE:29.90
我下载了Flatter sdk,并将其放在/home/sony/flatter/bin中。我安装了vs代码,安装了Flatter和dart依赖项,并试图创建新项目,但我发现问题“找不到Flatter sdk。请确保安装了Flatter并且在您的路径中(您可能需要重新启动)。”我通过vs代码(/home/sony/flatter/bin)中的LOCATE sdk按钮显示了我的Flatter sdk的
我最近开始使用Firebase fiRecovery,这是一个我似乎找不到答案的错误,我在查看类似问题的答案后尝试将snapshot.data.documents编写为文档、文档和文档,但它仍然抛出相同的错误。我该怎么办?我正在使用的fiRecovery版本是cloud_firestore:^1.0.7 它引发的异常