treeDeepMerge function
Implementation
Map<String, dynamic> treeDeepMerge(
Map<String, dynamic> map1,
Map<String, dynamic> map2,
) {
final result = <String, dynamic>{};
// 先复制 map1 中的所有内容
for (final key in map1.keys) {
result[key] = map1[key];
}
// 然后合并 map2 中的内容
for (final key in map2.keys) {
if (!result.containsKey(key)) {
// 如果 result 中不存在该键,直接添加
result[key] = map2[key];
} else {
// 如果两边都存在,需要根据类型合并
if (key == '__childFiles') {
// 合并 __childFiles 列表并去重
final List<String> mergedFiles = [
...result[key] as List<dynamic>,
...map2[key] as List<dynamic>,
].map((e) => e.toString()).toSet().toList();
result[key] = mergedFiles;
} else if (result[key] is Map && map2[key] is Map) {
// 如果都是 Map,递归合并
result[key] = treeDeepMerge(
result[key] as Map<String, dynamic>,
map2[key] as Map<String, dynamic>,
);
}
}
}
return result;
}