这是我使用Firebase中的流生成器获取数据的方式
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('profile').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if (!snapshot.hasData) return const Text('Loading...');
final int messageCount = snapshot.data.documents.length;
return ListView.builder(
shrinkWrap: true,
itemCount: messageCount,
itemBuilder: (_, int index) {
final DocumentSnapshot document = snapshot.data.documents[index];
return Container();}
);
},
),
我的问题是如何使用功能
将收集列表数据获取到initstate()
内的列表中
List data=new List();
@override
void initState() {
super.initState();
//here
}
答案 0 :(得分:0)
只需在您的有状态类中执行以下操作以获取数据,
bool isFetching=false;
List<String> dataList=[];
@override
void initState() {
super.initState();
getGroupsData();
}
getGroupsData() {
setState(() {
isFetching= true;
});
databaseReference
.collection("profile")
.getDocuments()
.then((QuerySnapshot snapshot) {
snapshot.documents.forEach((f) => dataList.add[f.data["name"]));
setState(() {
isFetching= false;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child : isFetching ?
CircularProgressIndictaor()
: dataList!=null && dataList.length >0
? ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return Text(dataList[index]);
}
)
: Text("No Data"),
)
);
}