[英]Cant Retrieve more than one collection in Flutter from cloud firestore
伙计们,我想做的是从 Firestore 数据库中检索 2 个集合文档并显示到我的 flutter 中,我的代码是:
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"]}
我已经进入注册表单,它可以工作,并且在我的小部件中显示 email 或名称,但如果我想要检索:
${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,
就这样!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.