trySetField<V> method

  1. @override
bool trySetField<V>(
  1. O o,
  2. String key,
  3. V? value, {
  4. EntityCache? entityCache,
})
override

Implementation

@override
bool trySetField<V>(O o, String key, V? value, {EntityCache? entityCache}) {
  var field = reflection.field<V>(key, o);
  if (field == null) return false;

  var fieldType = field.type;

  var resolvedValue = fieldType.typeInfo
      .resolveValue<V>(value, entityHandler: this, entityCache: entityCache);

  if (resolvedValue == null) {
    if (field.nullable) {
      field.setNullable(null);
      return true;
    } else {
      return false;
    }
  }

  if (fieldType.type == resolvedValue.runtimeType) {
    field.set(resolvedValue);
    return true;
  } else {
    return false;
  }
}