traverseMap function
Traverses a Map using a list of keys. If the keys do not exist, they are
created. If newValue is provided, the value at the end of the traversal is
set to newValue.
Returns the value at the end of the traversal.
Implementation
dynamic traverseMap(
Map<dynamic, dynamic> map,
Iterable<dynamic> keys, {
dynamic newValue,
}) {
dynamic current = map;
for (var n = 0; n < keys.length; n++) {
final key = keys.elementAt(n);
if (n == keys.length - 1) {
if (newValue != null) {
current[key] = newValue;
return;
} else {
return current[key];
}
} else {
if (current is Map && current.containsKey(key)) {
current = current[key];
} else {
if (newValue != null) {
current[key] = <dynamic, dynamic>{};
current = current[key];
} else {
return null;
}
}
}
}
return null;
}