Firebase 将firestore中的文档存储在列表中
我试图从名为“Org”的集合中检索文档,并将其存储在列表中以显示在下拉菜单中,但列表返回Firebase 将firestore中的文档存储在列表中,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我试图从名为“Org”的集合中检索文档,并将其存储在列表中以显示在下拉菜单中,但列表返回[QueryDocumentSnapshot的实例,'QueryDocumentSnapshot'的实例],因此出现以下错误: The method 'map' was called on null. Receiver: null Tried calling: map(Closure: (dynamic) => DropdownMenuItem<dynamic>) 试试这个 @overri
[QueryDocumentSnapshot的实例,'QueryDocumentSnapshot'的实例]
,因此出现以下错误:
The method 'map' was called on null.
Receiver: null
Tried calling: map(Closure: (dynamic) => DropdownMenuItem<dynamic>)
试试这个
@override
initState() {
super.initState();
Firebase.initializeApp();
organisation();
}
以及
在函数外部声明列表
final List<DocumentSnapshot> list;
void organisation() async {
await Firebase.initializeApp();
QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection("Org").get();
list = querySnapshot.docs;
print(list);
list.forEach((data) => print(data));
}
最终列表;
无效组织()异步{
等待Firebase.initializeApp();
QuerySnapshot QuerySnapshot=wait FirebaseFirestore.instance.collection(“Org”).get();
list=querySnapshot.docs;
打印(列表);
list.forEach((数据)=>打印(数据));
}
更新
StreamBuilder(
stream: FirebaseFirestore.instance.collection("Org").get();
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshots) {
if (snapshots.connectionState == ConnectionState.active &&
snapshots.hasData) {
print(snapshots.data);
return ListView.builder(
itemCount: snapshots.docs.length,
itemBuilder: (BuildContext context, int index) {
DocumentSnapshot doc = snapshots.data[index];
Map data= doc.data;//This is your data
return Text(
data.toString(),
);
},
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
StreamBuilder(
流:FirebaseFirestore.instance.collection(“Org”).get();
生成器:(BuildContext上下文,
异步快照(快照){
如果(snapshots.connectionState==connectionState.active)&&
快照(hasData){
打印(快照、数据);
返回ListView.builder(
itemCount:snapshots.docs.length,
itemBuilder:(构建上下文,int索引){
DocumentSnapshot doc=快照.数据[索引];
Map data=doc.data;//这是您的数据
返回文本(
data.toString(),
);
},
);
}否则{
返回中心(子项:CircularProgressIndicator());
}
},
),
在initState()中,您在哪里调用组织()?在super.initState()之后调用其他方法否,这将提供帮助。它仍然返回实例,而不是值请upvote并接受这个答案,如果它有帮助:)这也没有帮助。我认为您必须在Streambuilder的生成器中做一些小的更改才能使其工作
final List<DocumentSnapshot> list;
void organisation() async {
await Firebase.initializeApp();
QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection("Org").get();
list = querySnapshot.docs;
print(list);
list.forEach((data) => print(data));
}
StreamBuilder(
stream: FirebaseFirestore.instance.collection("Org").get();
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshots) {
if (snapshots.connectionState == ConnectionState.active &&
snapshots.hasData) {
print(snapshots.data);
return ListView.builder(
itemCount: snapshots.docs.length,
itemBuilder: (BuildContext context, int index) {
DocumentSnapshot doc = snapshots.data[index];
Map data= doc.data;//This is your data
return Text(
data.toString(),
);
},
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),