setInstanceByMap method

  1. @override
FutureOr<void> setInstanceByMap(
  1. VMClassContext context,
  2. ASTRunStatus runStatus,
  3. ASTValue<VMObject> instance,
  4. Map<String, ASTValue> value, {
  5. bool caseInsensitive = false,
})
override

Implementation

@override
FutureOr<void> setInstanceByMap(
    VMClassContext context,
    ASTRunStatus runStatus,
    ASTValue<VMObject> instance,
    Map<String, ASTValue> value,
    {bool caseInsensitive = false}) async {
  if (instance is! ASTClassInstance<VMObject>) {
    throw _exceptionNotClassInstance(instance);
  }

  var vmObject = instance.vmObject;

  for (var field in _fields.values) {
    var fieldName = field.name;
    var fieldValue = value[fieldName];

    if (fieldValue != null) {
      if (caseInsensitive) {
        fieldName = vmObject.getFieldNameIgnoreCase(fieldName) ?? fieldName;
      }
      vmObject.setFieldValue(fieldName, fieldValue);
    }
  }
}