deleteNestedValue function
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;
}