Để hoàn thành câu trả lời Gunter của: cách khuyến khích để so sánh danh sách cho sự bình đẳng (chứ không phải là bản sắc) là bằng cách sử dụng các lớp học bình đẳng từ gói sau
import 'package:collection/collection.dart';
Chỉnh sửa: trước 1.13, nó là gói 'nhập khẩu: collection/equality.dart';
Ví dụ:,
Function eq = const ListEquality().equals;
print(eq([1,'two',3], [1,'two',3])); // => true
Các bản in trên true
vì các phần tử danh sách tương ứng là identical()
. Nếu bạn muốn (sâu) so sánh danh sách có thể chứa các bộ sưu tập khác sau đó thay vì sử dụng:
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
Có các lớp học bình đẳng khác có thể được kết hợp bằng nhiều cách, trong đó có sự bình đẳng cho Map
s. Bạn thậm chí có thể thực hiện một có thứ tự (sâu) so sánh bộ sưu tập:
Function unOrdDeepEq = const DeepCollectionEquality.unordered().equals;
List list3 = [3, [[],'a'], 1];
print(unOrdDeepEq(list2, list3)); // => true
Để biết chi tiết thấy package API documentation. Như thường lệ, để sử dụng một gói phần mềm như vậy, bạn phải liệt kê nó trong pubspec.yaml
của bạn:
dependencies:
collection: any
thể dupe của http://stackoverflow.com/questions/19713572/how-do-i-compare-two-lists-as-being-equal-and-containing-the-same-objects -in-da –