【Flutter】判斷兩個 Map 是否相同

不能直接用「==」或「mapEquals()」,因為是檢查是否有相同的引用 (reference),而不是相同的內容。要使用 collection 的 DeepCollectionEquality() 才能正確判斷。

collection: ^1.19.1
import 'package:collection/collection.dart';

if (const DeepCollectionEquality().equals(map1, map2)) {
  print('Same!');
}

原因分析

import 'package:flutter/foundation.dart';
import 'package:collection/collection.dart';

void main() {
  Map a = {'options': {'size': 'large'}};
  Map b = {'options': {'size': 'large'}};
  print(a == b); // false
  print(mapEquals(a, b)); // false
  print(DeepCollectionEquality().equals(a, b)); // true
}
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *