Flutter&DartでList<Map>の要素を比較したいときに使えるクラスとメソッドを紹介します。
参考サイト
はじめに、List<Map>の要素比較のためにcollection packageをimportします。
import 'package:collection/collection.dart';
そして比較のために、DeepCollectionEqualityクラスを活用します。
import 'package:collection/collection.dart';
void main() {
List listMap1 = [{'a':1,'b':1},{'a':2,'b':2},{'a':3,'b':3}];
List listMap2 = [{'a':1,'b':1},{'a':2,'b':2},{'a':3,'b':3}];
Function unOrdDeepEq = const DeepCollectionEquality.unordered().equals;
bool _isListEqual = unOrdDeepEq(listMap1,listMap2);
print(_isListEqual); //=>true
}
なおコンストラクタにDeepCollectionEquality.unorderedを活用することで、List要素の順序が異なっても比較してくれます。
ちなみに、ListEqualityクラスのequalsメソッドではListの比較は可能ですがList<Map>の比較はできずfalseが返されますので注意が必要です。
import 'package:collection/collection.dart';
void main() {
List listMap1 = [{'a':1,'b':1},{'a':2,'b':2},{'a':3,'b':3}];
List listMap2 = [{'a':1,'b':1},{'a':2,'b':2},{'a':3,'b':3}];
Function eq = const ListEquality().equals;
bool _isListEqual = eq(listMap1,listMap2);
print(_isListEqual ); //=> false
}
以上、List<Map>型の要素比較にはDeepCollectionEqualityクラスのメソッドを活用できます。
サンプルコードは下記のGitHubリポジトリを参照してください。