Flutter

Flutter&DartのList<Map>型の要素を比較する方法

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リポジトリを参照してください。