不能直接用「==」或「mapEquals()」,因為是檢查是否有相同的引用 (reference),而不是相同的內容。要使用 collection 的 DeepCollectionEquality() 才能正確判斷。
collection: ^1.19.1import '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
}