merge static method
合并配置信息
current 需要合并的配置信息
namePath 需要合并的路径
Implementation
static Map<String, dynamic> merge({
required Map<String, dynamic> current,
required Map<String, dynamic> origin,
List<String> namePath = const [],
}) {
Map<String, dynamic> map = Map.from(origin);
if (namePath.isNotEmpty) {
for (int i = 0; i < namePath.length; i++) {
final isLast = i == (namePath.length - 1);
final p = namePath[i];
final tmp = map[p];
if (!isLast) {
if (tmp is Map && tmp[p] is Map) {
map = tmp[p] as Map<String, dynamic>;
} else {
// 如果要求嵌套,但目前不是,则默认覆盖为Map
map[p] = <String, dynamic>{};
}
} else {
// 若tmp不是Map, 则默认覆盖为Map
map[p] = _computeAndMerge(
tmp is Map ? tmp as Map<String, dynamic> : {},
current,
);
}
}
} else {
map = {
...map,
...current,
};
}
return map;
}