我有以下问题。有两个包含文章的列表。在下面的示例中,结果打印false。但文章都是一样的。我认为是这样,因为这些是不同的对象,如果我在两个列表中添加article1,它将是true。
我还从这个问题中尝试了 DeepCollectionEquality.unordered().equals: How can I Compare Lists for equality in Dart?
但它也给了我错误的回报。在我的实际项目中,我有两个包含文章的列表。这些列表没有排序,因此一篇文章可以是一个列表中的第一篇,而具有相同 id 和名称的文章可以是另一个列表中的最后一篇。但如果两个列表具有相同的文章(具有相同的名称和 ID),则结果应为 true。
var a = List<Article>();
var b = List<Article>();
var article1 = Article(id: "1", name: "Beer");
var article2 = Article(id: "1", name: "Beer");
a.add(article1);
b.add(article2);
print(listEquals(a, b));
Run Code Online (Sandbox Code Playgroud) 我即将在 Flutter 中使用数据库“Sembast”。具有 string 和 int 等数据类型的简单对象可以正常工作。但是,使用列表时会出现问题。
我创建了一个示例并针对以下教程进行了自我介绍:https : //resocoder.com/2019/04/06/flutter-nosql-database-sembast-tutorial-w-bloc/ 在我的示例中,有水果和树叶作为对象。一个水果包含一个叶子列表。
class Fruit {
final String id;
final String name;
final bool isSweet;
final List<Leaves> leaves;
...
}
class Leaves {
final String id;
final String name;
...
}
//Create a sample object
var leaveOne = Leaves(id: "1", name: "leaveOne");
var leaveTwo = Leaves(id: "2", name: "leaveTwo");
var leaveThree = Leaves(id: "3", name: "leaveThree");
var leavesList = List<Leaves>();
leavesList.add(leaveOne);
leavesList.add(leaveTwo);
leavesList.add(leaveThree);
var fruit = Fruit(id: "1", name: "Apple", isSweet: …Run Code Online (Sandbox Code Playgroud)