FlatterFirebase将两个集合数据合并到一个数组中,并在小部件中显示数据

FlatterFirebase将两个集合数据合并到一个数组中,并在小部件中显示数据,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我想将两个采集数据合并到一个数组中,并在listView.builder中显示结果 用户(UID、姓名、电子邮件、电话、经度、纬度) 和行程(用户ID、日期、时间、价格、从、到) PS:这两个集合之间的关系是用户ID, 因此,我想为每个元素显示一张卡片,其中包含以下详细信息: 姓名、电子邮件、电话、日期、时间、起止日期 如何做到这一点 import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:fireba

我想将两个采集数据合并到一个数组中,并在listView.builder中显示结果

用户(UID、姓名、电子邮件、电话、经度、纬度)

和行程(用户ID、日期、时间、价格、从、到)

PS:这两个集合之间的关系是用户ID,

因此,我想为每个元素显示一张卡片,其中包含以下详细信息:

姓名、电子邮件、电话、日期、时间、起止日期

如何做到这一点

    import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';

class VoyagerModel {
  var firestore = FirebaseFirestore.instance;
  String de, vers, adress;
  DateTime dateTime;
  double price;
  User user;
  String time;
  createVoyage() async {
    await firestore.collection('voyages').add({
      'userId': this.user.uid,
      'de': this.de,
      'vers': this.vers,
      'date': this.dateTime,
      'time': this.time,
      'adress': this.adress,
      'prix': this.price
    });
  }
}
以及用户模型

import 'package:cloud_firestore/cloud_firestore.dart';

class ClientModel {
  String ref = 'clients';

  createUser(
      {id,
      int number,
      String name,
      String email,
      double long,
      double lat}) async {
    await FirebaseFirestore.instance.collection('users').doc(id).set({
      'userId': id,
      'name': name,
      'email': email,
      'phone': number,
      'longitude': long,
      'latitude': lat
    }).catchError((err) => {print(err.toString())});
  }
}

这就是你要找的

列出旅行者=[];
列出用户=[];
@凌驾
void initState(){
//填充旅行者和用户
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回容器(
子项:ListView.builder(
itemCount:users.length,
itemBuilder:(上下文,索引){
最终用户=用户[索引];
最终用户旅行者=
旅行者
.其中((voyager)=>voyager.user.id==user.id)
.toList();
返回列(
子项:userVoyager.map((userVoyager){
回程卡(
子:列(
mainAxisSize:mainAxisSize.min,
儿童:[
文本(用户名),
文本(user.email),
文本(“${user.number}”),
文本(userVoyager.dateTime.toString()),
文本(userVoyager.de),
文本(userVoyager.vers),
],
),
);
}).toList(),
);
},
),
);
}
}

您的VoyagerModel中的
用户
客户端模型
相同?是的,它们之间的关系是多对多的,从用户集合中获取姓名、电子邮件、电话;日期从和到自voyages Collection
VoyagerModel
有一个包含姓名、电子邮件和电话的用户。我在每次迭代中访问分配给voyager的用户。不,它们是不同的集合,它们是独立的。它们之间的关系只是用户ID,它们对manyOk来说是多个。我想您有两个不同的
列表。一个是
ListOk,我更新了我的解决方案