deepSet method

Map<String, dynamic> deepSet(
  1. List<String> path,
  2. dynamic value
)

Sets a deeply nested value at path, creating intermediate maps as needed.

<String, dynamic>{}.deepSet(['user', 'name'], 'Alice')
// {'user': {'name': 'Alice'}}

Implementation

Map<String, dynamic> deepSet(List<String> path, dynamic value) {
  if (path.isEmpty) return this as Map<String, dynamic>;
  final result = Map<String, dynamic>.from(this as Map);
  Map<String, dynamic> current = result;
  for (var i = 0; i < path.length - 1; i++) {
    final key = path[i];
    if (current[key] is! Map) {
      current[key] = <String, dynamic>{};
    }
    current = Map<String, dynamic>.from(current[key] as Map);
    result[path[i]] = current;
  }
  current[path.last] = value;
  return result;
}