setFieldValue method

void setFieldValue(
  1. String name,
  2. dynamic value
)

Установить значение поля

Implementation

void setFieldValue(String name, dynamic value) {
  //TODO: убрать этот метод, присваивать значения в setValue полей
  assert(fieldList.fields.containsKey(name), 'object $runtimeType does not contains field $name');
  if (!fieldList.fields.containsKey(name)) {}
  var field = getField(name);
  if (field is NsgDataDoubleField) {
    field.setValue(fieldValues, value);
    return;
  }
  if (value is NsgEnum) {
    value = value.value;
  } else if (value is NsgDataItem) {
    if (fieldList.fields[name] is NsgDataUntypedReferenceField) {
      value = '${value.getFieldValue(value.primaryKeyField)}.${value.typeName}';
    } else {
      value = value.getFieldValue(value.primaryKeyField);
    }
  } else if (value is DateTime) {
    value = value.toIso8601String();
  } else if (value is double) {
    var field = getField(name);
    if (field is NsgDataDoubleField) {
      value = value.nsgRoundToDouble(field.maxDecimalPlaces);
    }
  } else if (name != primaryKeyField) {
    if (value is String) {
      var field = getField(name);
      if (field is NsgDataStringField && value.length > field.maxLength && field.maxLength != 0) {
        value = value.toString().substring(0, field.maxLength);
      } else if (field is NsgDataDoubleField) {
        //TODO: такое впечатление, что весь это метод надо заменить на данную строку.
        //Отложил это изменение, чтобы все не сломать
        field.setValue(fieldValues, value);
        return;
      }
    }
  }
  fieldValues.setValue(this, name, value);
}