deleteNestedValue function

bool deleteNestedValue(
  1. dynamic data,
  2. String path
)

Delete value at nested path.

Returns true if deleted, false if path doesn't exist.

Implementation

bool deleteNestedValue(dynamic data, String path) {
  if (data == null) return false;
  if (!(data is Map || data is List)) return false;

  final keys = path.split('.');
  if (keys.isEmpty) return false;

  dynamic current = data;

  // Navigate to parent of target
  for (int i = 0; i < keys.length - 1; i++) {
    final key = keys[i];

    if (current is List) {
      final index = int.tryParse(key);
      if (index == null || index < 0 || index >= current.length) {
        return false;
      }
      current = current[index];
    } else if (current is Map) {
      if (!current.containsKey(key)) {
        return false;
      }
      current = current[key];
    } else {
      return false;
    }
  }

  // Delete the final value
  final lastKey = keys.last;

  if (current is List) {
    final index = int.tryParse(lastKey);
    if (index == null || index < 0 || index >= current.length) {
      return false;
    }
    current.removeAt(index);
    return true;
  } else if (current is Map) {
    if (!current.containsKey(lastKey)) {
      return false;
    }
    current.remove(lastKey);
    return true;
  }

  return false;
}