flutter - 检查列表是否包含来自另一个列表的值
flutter - check if list contains value from another list
我有两个列表,一个是 posted 图片,另一个是朋友。
posts 列表中应该只显示朋友 posts。
在这种情况下,欧比。
class postModel{
String? image;
String? userId;
String? name;
int? age;
postModel({this.image, this.userId, this.name, this.age});
}
List<postModel> imageList = [
postModel(image: "imageUrl", userId: "1gw3t2s", name: "Luke", age: 21),
postModel(image: "imageUrl2", userId: "hjerhew", name: "Joda", age: 108),
postModel(image: "imageUrl3", userId: "475fdhr", name: "Obi", age: 30),
postModel(image: "imageUrl4", userId: "jrt54he", name: "Vader", age: 35),];
class friendModel{
String? userId;
String? name;
friendModel({this.userId, this.name});
}
List<friendModel> friendList = [
friendModel(userId: "1gw3t2s", name: "Luke"),
friendModel(userId: "hjerhew", name: "Joda"),];
//...
ListView.builder(
itemCount: imageList.length,
itemBuilder: (context, i) {
return friendList.contains(imageList[i].userId) //something like that
?Image.network(imageList[i].image)
:Container();
}
输出应该只是来自 Luke 和 Joda
的 post
谢谢
初始化一个新列表 a 并向其中添加数据,如下所示
List<friendModel> a = [];
for(var img in imageList){
for(var frnd in friendList){
if(img.name == frnd.name){
a.add(frnd);
}
}
}
print(a);
如果你想避免双重 for 循环。你可以使用类似的东西:
for(int i = 0; i < friendList.length; i++) {
var test = imageList.where((e) => e.userId ==
friendList[i].userId).toList();
print(test[0].image);
}
但用另一个列表替换测试变量,然后您可以添加或自定义适用于您的应用程序的任何内容。
我有两个列表,一个是 posted 图片,另一个是朋友。 posts 列表中应该只显示朋友 posts。 在这种情况下,欧比。
class postModel{
String? image;
String? userId;
String? name;
int? age;
postModel({this.image, this.userId, this.name, this.age});
}
List<postModel> imageList = [
postModel(image: "imageUrl", userId: "1gw3t2s", name: "Luke", age: 21),
postModel(image: "imageUrl2", userId: "hjerhew", name: "Joda", age: 108),
postModel(image: "imageUrl3", userId: "475fdhr", name: "Obi", age: 30),
postModel(image: "imageUrl4", userId: "jrt54he", name: "Vader", age: 35),];
class friendModel{
String? userId;
String? name;
friendModel({this.userId, this.name});
}
List<friendModel> friendList = [
friendModel(userId: "1gw3t2s", name: "Luke"),
friendModel(userId: "hjerhew", name: "Joda"),];
//...
ListView.builder(
itemCount: imageList.length,
itemBuilder: (context, i) {
return friendList.contains(imageList[i].userId) //something like that
?Image.network(imageList[i].image)
:Container();
}
输出应该只是来自 Luke 和 Joda
的 post谢谢
初始化一个新列表 a 并向其中添加数据,如下所示
List<friendModel> a = [];
for(var img in imageList){
for(var frnd in friendList){
if(img.name == frnd.name){
a.add(frnd);
}
}
}
print(a);
如果你想避免双重 for 循环。你可以使用类似的东西:
for(int i = 0; i < friendList.length; i++) {
var test = imageList.where((e) => e.userId ==
friendList[i].userId).toList();
print(test[0].image);
}
但用另一个列表替换测试变量,然后您可以添加或自定义适用于您的应用程序的任何内容。