mergeMaps method
Implementation
Map<String, dynamic> mergeMaps(Map<String, dynamic> itemB,
{
bool preferThis = false,
Set<String>? nonOverridableKeys,
}
) {
final merged = <String, dynamic>{};
final allKeys = {...keys, ...itemB.keys};
nonOverridableKeys ??= {};
for (var key in allKeys) {
final valueA = this[key];
final valueB = itemB[key];
if (nonOverridableKeys.contains(key) && valueA != null) {
merged[key] = valueA;
} else if (valueA != null && valueB != null) {
merged[key] = preferThis ? valueA : valueB;
} else if (valueA != null) {
merged[key] = valueA;
} else if (valueB != null) {
merged[key] = valueB;
} else {
merged[key] = null;
}
}
return merged;
}