setFieldValue method
Установить значение поля
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);
}