Hy Guys我想要做的是从Firestore数据库中检索2个收集文档并将其显示在我的拍打中,我的代码是:
Future<QuerySnapshot> getData() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
return await Firestore.instance
.collection("user")
.where("email", isEqualTo: firebaseUser.email)
.getDocuments();
}
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return FutureBuilder(
future: getData(),
这使我可以从特定用户检索数据,但是我还有另一种称为“ shippingAddress”的表格,它可以创建集合,如下所示:
void createRecord() async {
await databaseReference.collection("shippingAddress").add({
'alias': '$alias',
'shippingName': '$shippingName',
'shippinglastName': '$shippinglastName',
'street': '$street',
'streetNumber': '$streetNumber',
'zipNumber': '$zipNumber',
'phoneNumber': '$phoneNumber',
'textMessage': '$textMessage',
'totalQuantity': '$totalQuantity',
'totalWeight': '$totalWeight',
}).then((value) {
print(value.documentID);
});
}
那么我还必须检索上述集合,但我不知道如何做...因为在同一屏幕上,我检索“用户”集合以仅显示特定用户的数据,并且我还需要检索“ shippingAddress”集合,因为在此类集合中还有其他数据要显示,例如,如果我检索
${snapshot.data.documents[index].data["email"]} or ${snapshot.data.documents[index].data["name"]}
我已经进入了注册表单,并且可以在我的小部件中显示电子邮件或姓名,但是如果要例如检索:
${snapshot.data.documents[index].data["alias"]}
创建到“ shippingAddress”集合中的文件我无法获取它们
我有解决方案。首先从现有用户获取数据:
final databaseReference = Firestore.instance;
Future<QuerySnapshot> getData() async {
var firebaseUser = await FirebaseAuth.instance.currentUser();
return await Firestore.instance
.collection("user")
.where("email", isEqualTo: firebaseUser.email)
.getDocuments();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getData(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) {
return Column(
children: <Widget>[
Stream(),
并与其他集合一起调用Stream Builder:
lass Stream extends StatefulWidget {
@override
_StreamState createState() => _StreamState();
}
class _StreamState extends State<Stream> {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('shippingAddress').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Text('Loading data please Wait');
return Column(
children: <Widget>[
Container(
height: 1000,
child: ListView.builder(
itemCount: snapshot.data.documents.length,
就这样!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句