setKeyValue method
return a list if keyPath is an array
if keyPath
is a, the list cannot contain null values and null is returned instead.
Implementation
void setKeyValue(Object? keyPath, Object value) {
if (keyPath is String) {
return setFieldValue(keyPath, value);
} else if (keyPath is List) {
final keyList = keyPath;
if (isDebug) {
if (value is! List) {
throw ArgumentError.value(value, 'key value', 'is not a list');
}
if (keyPath is! List<String>) {
throw ArgumentError.value(
keyPath,
'keyPath',
'is not a list of string',
);
}
if (value.length != keyList.length) {
throw ArgumentError.value(
'$keyPath: $value',
'keyPath: value',
'length do not match (${keyList.length} vs ${value.length}',
);
}
}
/// value must be a list
final valueList = value as List<Object?>;
assert(keyList.length == valueList.length);
for (var i = 0; i < keyList.length; i++) {
setFieldValue(keyList[i] as String, valueList[i]!);
}
} else {
throw 'keyPath $keyPath not supported';
}
}