要完成 Gunter 的回答:比较列表是否相等(而不是身份)的推荐方法是使用以下包中的 Equality 类
import 'package:collection/collection.dart';
编辑:在 1.13 之前,是 import 'package:collection/equality.dart';
例如:
Function eq = const ListEquality().equals;
print(eq([1,'two',3], [1,'two',3])); // => true
上面打印true,因为对应的列表元素是identical()。如果您想(深入)比较可能包含其他集合的列表,请改用:
Function deepEq = const DeepCollectionEquality().equals;
List list1 = [1, ['a',[]], 3];
List list2 = [1, ['a',[]], 3];
print( eq(list1, list2)); // => false
print(deepEq(list1, list2)); // => true
还有其他 Equality 类可以通过多种方式组合,包括 Maps 的相等性。您甚至可以对集合进行无序(深度)比较:
Function unOrdDeepEq = const DeepCollectionEquality.unordered().equals;
List list3 = [3, [[],'a'], 1];
print(unOrdDeepEq(list2, list3)); // => true
详情请参阅package API documentation。像往常一样,要使用这样的包,您必须在pubspec.yaml 中列出它:
dependencies:
collection: any