getField method
Implementation
Field getField(String name, YamlMap property) {
try {
final required =
property.containsKey('required') && property['required'] == true;
final ignored =
property.containsKey('ignore') && property['ignore'] == true;
final nonFinal = ignored ||
property.containsKey('non_final') && property['non_final'] == true;
final includeIfNull = property.containsKey('include_if_null') &&
property['include_if_null'] == true;
final unknownEnumValue = property['unknown_enum_value'];
final jsonKey = property['jsonKey'] ?? property['jsonkey'];
final fromJson = property['fromJson'];
final toJson = property['toJson'];
final description = property.containsKey('description')
? property['description']!.toString()
: null;
final type = property['type'];
final skipEquality = property['ignore_equality'] == true;
var defaultValue = property['default_value']?.toString();
ItemType itemType;
if (type == null) {
throw Exception('$name has no defined type');
}
if (type == 'object' || type == 'dynamic' || type == 'any') {
itemType = DynamicType();
} else if (type == 'bool' || type == 'boolean') {
itemType = BooleanType();
} else if (type == 'string' || type == 'String') {
itemType = StringType();
} else if (type == 'date' || type == 'datetime') {
itemType = DateTimeType();
} else if (type == 'double') {
itemType = DoubleType();
} else if (type == 'int' || type == 'integer') {
itemType = IntegerType();
} else if (type == 'array') {
final items = property['items'];
final arrayType = items['type'];
itemType = ArrayType(_makeGenericName(arrayType));
} else if (type == 'map') {
final items = property['items'];
final keyType = items['key'];
final valueType = items['value'];
itemType = MapType(
key: _makeGenericName(keyType),
valueName: _makeGenericName(valueType),
);
} else {
itemType = ObjectType(type);
}
return Field(
name: name,
type: itemType,
isRequired: required,
ignore: ignored,
jsonKey: jsonKey,
nonFinal: nonFinal,
description: description,
includeIfNull: includeIfNull,
unknownEnumValue: unknownEnumValue,
fromJson: fromJson,
toJson: toJson,
ignoreEquality: skipEquality,
defaultValue: defaultValue,
);
} catch (e) {
print('Something went wrong with $name:\n\n${e.toString()}');
rethrow;
}
}