actualizarValorCampo method
void
actualizarValorCampo(])
Implementation
void actualizarValorCampo(List<String> keys, dynamic data, dynamic valor,
Map<String, dynamic> esquema,
[TipoDato? typeData]) {
if (data == null || keys.isEmpty) return;
final contieneIndice = keys.any((element) => int.tryParse(element) != null);
try {
for (int i = 0; i < keys.length; i++) {
final key = keys[i];
final index = int.tryParse(key);
final ultimaKey = i == keys.length - 1;
//Con esto evito que actulize un valor de un arrayObject sin tener el
//indice de la lista
if (!contieneIndice) {
final propiedades = FlutterUtilsProvider.obtenerEsquemaSegunKey(
esquema,
FlutterUtilsProvider.estableceKeyParaEsquema(
keys.sublist(0, i + 1)));
final type = TypeEsquema.fromString(propiedades['type'] ?? '');
if (type == TypeEsquema.arrayObjects) {
return;
}
}
// Si es el último key, actualiza el valor
if (ultimaKey) {
if (typeData == null) {
final propiedades = FlutterUtilsProvider.obtenerEsquemaSegunKey(
esquema, FlutterUtilsProvider.estableceKeyParaEsquema(keys));
typeData = TipoDato.fromString(
propiedades[CamposPropiedadEsquema.tipoDato.name] ?? '');
}
if (typeData == TipoDato.unKnown) break;
valor = FlutterUtilsProvider.convierteValorSegunTipo(typeData, valor);
if (index != null) {
if (data[index] != null) {
// Si el key es un índice de lista
data[index] = valor;
}
} else {
data[key] = valor;
}
} else {
if (index == null) {
if (data[key] == null) break;
data = data[key];
} else {
if (data[index] == null) break;
data = data[index];
}
}
}
} catch (error) {
ApiRest.logDebug(
'actualizarValorCampo $keys Error al actualizar el valor del campo: $error');
}
}