createFromMap method
FutureOr<O>
createFromMap(
- Map<
String, dynamic> fields, { - EntityProvider? entityProvider,
- EntityCache? entityCache,
- EntityHandlerProvider? entityHandlerProvider,
- EntityRepositoryProvider? entityRepositoryProvider,
- EntityResolutionRules? resolutionRules,
- JsonDecoder? jsonDecoder,
Creates an entity O
with fields
.
Implementation
FutureOr<O> createFromMap(Map<String, dynamic> fields,
{EntityProvider? entityProvider,
EntityCache? entityCache,
EntityHandlerProvider? entityHandlerProvider,
EntityRepositoryProvider? entityRepositoryProvider,
EntityResolutionRules? resolutionRules,
JsonDecoder? jsonDecoder}) {
entityCache ??= JsonEntityCacheSimple();
jsonDecoder ??= Json.defaultDecoder;
var returnFieldsUsedKeys = <String>[];
return resolveFieldsNamesAndValues(fields,
entityProvider: entityProvider,
entityCache: entityCache,
entityHandlerProvider: entityHandlerProvider,
entityRepositoryProvider: entityRepositoryProvider,
returnFieldsUsedKeys: returnFieldsUsedKeys,
resolutionRules: resolutionRules)
.resolveMapped((resolvedFields) {
try {
// Add unresolved fields, to allow non field parameters,
// constructors with parameters different from class field name.
for (var f in fields.keys) {
if (!returnFieldsUsedKeys.contains(f)) {
resolvedFields[f] = fields[f];
}
}
return instantiateFromMapImpl(resolvedFields, jsonDecoder: jsonDecoder)
.resolveMapped((o) {
if (o != null) {
entityCache!.cacheEntity(o, getID);
return o;
} else {
return _createFromMapDefaultImpl(
resolvedFields, entityProvider, entityCache!, resolutionRules);
}
});
} catch (e, s) {
if (e is! UnresolvedParameterError) {
_log.warning(
"Error creating `$type` from `Map` using `instantiatorFromMap`. Trying instantiation with default constructor...",
e,
s);
}
return _createFromMapDefaultImpl(
fields, entityProvider, entityCache!, resolutionRules);
}
});
}