例如,我有以下两个动态Map,它们具有相同的键和值:
Map a = {
'name':'alex',
'products': {'type':'cars'},
'rate':100,
'others':['not yet']
};
Map b = {
'name':'alex',
'products': {'type':'cars'},
'rate':100,
'others':['not yet']
};
当我打电话
print((a==b).toString()); => always print false why ?
如何以正确的方式检查它我需要知道这两个Map是否具有完全相同的键和值。
2条答案
按热度按时间jdgnovmf1#
你可以试试DeepCollectionEquality类in here
示例:
jm81lzqq2#
为了检查两个(或多个)Map是否相等,您可能需要(按照给定的顺序)执行以下操作
1.应该具有相同的长度(如果所有Map的长度为null,则返回true)
1.遍历任何Map的键列表,并检查其他Map中是否存在相同的键值对,如果它们之间的“and”操作在任何时候都为false,则返回false
1.最后返回true(只有当第2步中的所有and操作都返回true时才返回此值)
或者,您可以使用https://api.flutter.dev/flutter/foundation/mapEquals.html包。但唯一的缺点是它只接受两张Map作为输入