writeValue static method
dynamic
writeValue(
- dynamic data,
- String? tag,
- dynamic value
)
Implementation
static dynamic writeValue(dynamic data, String? tag, dynamic value)
{
// get segments
DotNotation? segments = DotNotation.fromString(tag);
if (segments == null || segments.isEmpty) return data;
// build map segments
for (int i = 0; i < segments.length - 1; i++)
{
var property = segments[i];
if (data is Map)
{
if (property.offset > 0)
{
data = null;
break;
}
if (!data.containsKey(property.name)) data[property.name] = "";
data = data[property.name];
}
if (data is List)
{
if (property.offset > data.length)
{
data = null;
break;
}
if (property.offset < data.length && property.offset >= 0) data = data[property.offset];
}
}
// write the value
var name = segments.last.name;
if (data is Map) data[name] = value;
}