Firebase 如何比较两个列表并返回另一个值为;那是相同的吗扑动与火基
我有两个返回ID的列表。我想比较两者,并返回一个新列表,其中包含出现在两者中的ID。然后,保存这些值在Firebase的新系列中 最好的方法是什么?我发现了几个类似的话题,但没有一个有用 我尝试使用intersection(),但最后它没有返回任何内容。这就是我得到两份清单的原因:Firebase 如何比较两个列表并返回另一个值为;那是相同的吗扑动与火基,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我有两个返回ID的列表。我想比较两者,并返回一个新列表,其中包含出现在两者中的ID。然后,保存这些值在Firebase的新系列中 最好的方法是什么?我发现了几个类似的话题,但没有一个有用 我尝试使用intersection(),但最后它没有返回任何内容。这就是我得到两份清单的原因: List<Users> followingList; List<Users> followersList; Future<List<Users>> _getF
List<Users> followingList;
List<Users> followersList;
Future<List<Users>> _getFollowersUsers() async {
Firestore db = Firestore.instance;
QuerySnapshot querySnapshot = await db
.collection('followers')
.document(_userId)
.collection("userFollowers")
.getDocuments();
List<Users> followersList = [];
for (DocumentSnapshot item in querySnapshot.documents) {
var data = item.data;
if (data["id"] == _userId) continue;
Users user = Users();
user.name = data["name"];
user.photoUrl = data["imageUrl"];
user.username = data["username"];
user.id = data["id"];
user.bio = data["bio"];
followersList.add(user);
}
return followersList;
}
Future<List<Users>> _getFollowingUsers() async {
Firestore db = Firestore.instance;
QuerySnapshot querySnapshot = await db
.collection('following')
.document(_userId)
.collection("userFollowing")
.getDocuments();
List<Users> followingList = [];
for (DocumentSnapshot item in querySnapshot.documents) {
var data = item.data;
if (data["id"] == _userId) continue;
Users user = Users();
user.name = data["name"];
user.photoUrl = data["imageUrl"];
user.username = data["username"];
user.id = data["id"];
user.bio = data["bio"];
followingList.add(user);
}
return followingList;
}
getFinalList() {
var finalList =
followingList.toSet().intersection(followersList.toSet()).toList();
print(finalList);
}
列表如下列表;
列表跟随者列表;
Future\u getFollowersUsers()异步{
Firestore db=Firestore.instance;
QuerySnapshot QuerySnapshot=wait db
.collection(“followers”)
.document(_userId)
.collection(“用户关注者”)
.getDocuments();
List followersList=[];
用于(querySnapshot.documents中的DocumentSnapshot项){
var数据=项目数据;
如果(数据[“id”]==\u userId)继续;
用户=用户();
user.name=数据[“name”];
user.photoUrl=数据[“imageUrl”];
user.username=数据[“username”];
user.id=数据[“id”];
user.bio=数据[“bio”];
followersList.add(用户);
}
返回跟踪列表;
}
Future\u GetFollowUsers()异步{
Firestore db=Firestore.instance;
QuerySnapshot QuerySnapshot=wait db
.collection('following')
.document(_userId)
.收集(“用户跟踪”)
.getDocuments();
列表如下列表=[];
用于(querySnapshot.documents中的DocumentSnapshot项){
var数据=项目数据;
如果(数据[“id”]==\u userId)继续;
用户=用户();
user.name=数据[“name”];
user.photoUrl=数据[“imageUrl”];
user.username=数据[“username”];
user.id=数据[“id”];
user.bio=数据[“bio”];
以下列表。添加(用户);
}
返回以下列表;
}
getFinalList(){
var finalList=
followerlist.toSet().intersection(followersList.toSet()).toList();
印刷品(finalList);
}
您可以在for中逐项检查并添加到另一个列表中
getFinalList() {
List<User> result = [];
followingList.forEach((aElement) {
User value =
followersList.firstWhere((bElement) => bElement.id == aElement.id, orElse: () => null);
if (value != null) {
result.add(value);
}
});
print(result);
}
getFinalList(){
列表结果=[];
以下列表。forEach((AEElement){
用户价值=
followersList.firstWhere((bElement)=>bElement.id==aElement.id,orElse:()=>null);
if(值!=null){
结果:增加(价值);
}
});
打印(结果);
}
我在未来函数中得到的列表正在运行,但似乎未保存在此处:列表如下列表;列表跟随者列表;这段代码是用来获取列表中的公共元素的,但是在调用它之前,你需要确保将来都完成了。我没有看到这一点,现在它可以工作了。谢谢