writeValue static method

dynamic writeValue(
  1. dynamic data,
  2. String? tag,
  3. dynamic value
)

Implementation

static 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;
}