List 颤振使用贴图比较2个对象列表,包含不工作
我有两个对象列表,即newList和oldList,如下所示: 新列表:List 颤振使用贴图比较2个对象列表,包含不工作,list,dictionary,flutter,contains,List,Dictionary,Flutter,Contains,我有两个对象列表,即newList和oldList,如下所示: 新列表:[对象{id:-LhnrmWPWN2XĀcWdIAQW,标题:,类别:废弃,纬度:-17.8594103,经度:30.9615846},对象{id:-LhnpMHQ3l288W28qoDW,标题:,类别:坑洞,纬度:-17.8593472,经度:30.9614917}] 旧列表:[对象{id:-LhnpMHQ3l288W28qoDW,标题:,类别:坑洞,纬度:-17.8593472,经度:30.9614917}] 问题在于,
[对象{id:-LhnrmWPWN2XĀcWdIAQW,标题:,类别:废弃,纬度:-17.8594103,经度:30.9615846},对象{id:-LhnpMHQ3l288W28qoDW,标题:,类别:坑洞,纬度:-17.8593472,经度:30.9614917}]
旧列表:[对象{id:-LhnpMHQ3l288W28qoDW,标题:,类别:坑洞,纬度:-17.8593472,经度:30.9614917}]
问题在于,使用以下代码检查newList中的所有对象是否都在oldList中时,使用contains不起作用:
newList.where((对象p)=>!oldList.contains(p))
.map((对象对象对象)=>print('\n\n\n\ntest\n$obj'))
.toList()代码>
事实上,对于newList中对象的两个实例,这段代码都返回true
我希望代码应该只为其中一个对象返回true
请协助。我想您需要检查两个对象是否相等
默认情况下,在Dart中,==
如果两个对象是同一实例,则返回true
此外,您可以使用包来比较对象
或者,正如包提供的那样,您可以在不使用包的情况下执行此操作,您需要覆盖对象和hashCode staff中的==
方法
class Person {
final String name;
const Person(this.name);
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Person &&
runtimeType == other.runtimeType &&
name == other.name;
@override
int get hashCode => name.hashCode;
}
但是我建议使用该软件包
import 'package:equatable/equatable.dart';
class Person extends Equatable {
final String name;
Person(this.name) : super([name]);
}
看起来您正在查找oldList是否在代码段中不包含该对象。尝试使用此代码
newList.where((i) => oldList.contains(i)).map((obj) {
print('${obj.id}');
return obj;
}).toList();
下面介绍一下上面代码的工作原理。代码段未打开