Flutter 如何从两个列表中获取唯一对象<;地图>;?

Flutter 如何从两个列表中获取唯一对象<;地图>;?,flutter,dart,collections,Flutter,Dart,Collections,我有两个地图类型的列表。如何从两个阵列中获取唯一的对象 List arr=[{“id”:“1”,“name”:“Apple”},{“id”:“2”,“name”:“Banana”},{“id”:“3”,“name”:“Cake”},{“id”:“4”,“name”:“Dog”}); 列表arr1=[{“id”:“1”,“name”:“Apple”},{“id”:“2”,“name”:“Boy”},{“id”:“3”,“name”:“Cow”},{“id”:“4”,“name”:“Dog”});

我有两个地图类型的列表。如何从两个阵列中获取唯一的对象

List arr=[{“id”:“1”,“name”:“Apple”},{“id”:“2”,“name”:“Banana”},{“id”:“3”,“name”:“Cake”},{“id”:“4”,“name”:“Dog”});
列表arr1=[{“id”:“1”,“name”:“Apple”},{“id”:“2”,“name”:“Boy”},{“id”:“3”,“name”:“Cow”},{“id”:“4”,“name”:“Dog”});
输出应如下所示:

List arr3=[{“id”:“2”,“name”:“Banana”},{“id”:“3”,“name”:“Cake”},{“id”:“2”,“name”:“Boy”},{“id”:“3”,“name”:“Cow”});
您可以使用以下方法:

List getUniq(List arr1,List arr2){
列表res=[];
用于(arr1中的var el1)
用于(arr2中的var el2)
如果(el1['id']==el2['id']&&el1['name']!=el2['name'])
res.addAll([el1,el2]);
返回res;
}
就你而言:

List arr3=getUniq(arr,arr1);
//输出[{id:2,name:Banana},{id:2,name:Boy},{id:3,name:Cake},{id:3,name:Cow}]
如您所见,它只返回具有相同
id
但不同
名称的项目