Flutter 使用DocumentSnapshot和Firestore对null调用了该方法
基本上,我需要将firestore数据库中集合的字段保存在列表中 这是负责连接到数据库的小部件:Flutter 使用DocumentSnapshot和Firestore对null调用了该方法,flutter,google-cloud-firestore,flutter-layout,flutter-dependencies,flutter-test,Flutter,Google Cloud Firestore,Flutter Layout,Flutter Dependencies,Flutter Test,基本上,我需要将firestore数据库中集合的字段保存在列表中 这是负责连接到数据库的小部件: Future<DocumentSnapshot> MissionRetriever1() async{ return await FirebaseFirestore.instance .collection("quest") .doc("1") .get(); } 它始终处于“加载…
Future<DocumentSnapshot> MissionRetriever1() async{
return await FirebaseFirestore.instance
.collection("quest")
.doc("1")
.get();
}
它始终处于“加载…”状态,并返回以下错误:
E/flutter ( 3639): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method 'MissionRetriever1' was called on null.
E/flutter ( 3639): Receiver: null
E/flutter ( 3639): Tried calling: MissionRetriever1()
这是Firestore系列:
这是init方法:
@override
void initState() {
super.initState();
asyncMethod();
}
void asyncMethod() async {
**await getMission1();**
await widget.auth.retrieveScore();
**await widget.mservice.MissionRetriever1();**
await widget.mservice.NumberGenerator();
}
这是列表初始化:**List missiondata=[]**代码>
注意:查看Firestore日志,没有拒绝连接更改方法“MissionRetriever1()”,查看是否能够恢复数据
return FirebaseFirestore firestore = FirebaseFirestore.instance
.collection('quest')
.doc("1")
.get()
.then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
print('Document data: ${documentSnapshot.data()}');
} else {
print('Document does not exist on the database');
}
});
您共享的错误仅表示您的mservice
为null
。这应该是你需要检查的第一件事。我试过了,但是没有打印出来debugging@MatteoGrondona如果你只放了一个打印语句,这个是打印的吗?我认为这不是firestore的问题,可能是代码流的问题。
@override
void initState() {
super.initState();
asyncMethod();
}
void asyncMethod() async {
**await getMission1();**
await widget.auth.retrieveScore();
**await widget.mservice.MissionRetriever1();**
await widget.mservice.NumberGenerator();
}
return FirebaseFirestore firestore = FirebaseFirestore.instance
.collection('quest')
.doc("1")
.get()
.then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
print('Document data: ${documentSnapshot.data()}');
} else {
print('Document does not exist on the database');
}
});