EntityReference<T>.fromJson constructor
EntityReference<T>.fromJson (
- Map<
String, dynamic> json, { - Type? type,
- String? typeName,
- EntityHandler<
T> ? entityHandler, - EntityProvider? entityProvider,
- EntityHandlerProvider? entityHandlerProvider,
- EntityFetcher<
T> ? entityFetcher, - EntityCache? entityCache,
Creates an EntityReference from a JSON Map.
If json
has an entry EntityReference
it will be treated as a Map from toJson,
otherwise will be treated as an entity JSON (a Map from entityToJson)
and instantiated through fromEntityMap.
Implementation
factory EntityReference.fromJson(Map<String, dynamic> json,
{Type? type,
String? typeName,
EntityHandler<T>? entityHandler,
EntityProvider? entityProvider,
EntityHandlerProvider? entityHandlerProvider,
EntityFetcher<T>? entityFetcher,
EntityCache? entityCache}) {
var entityReferenceType = json['EntityReference'];
if (entityReferenceType != null) {
if (entityReferenceType is! String) {
throw ArgumentError("Invalid `EntityReference` JSON: $json");
}
typeName ??= entityReferenceType;
var id = json['id'];
var entity = json['entity'];
if (entity != null) {
var entityMap = entity is Map
? entity
: TypeParser.parseMap(entity) ?? <String, dynamic>{};
var entityMapCast = entityMap is Map<String, dynamic>
? entityMap
: entityMap.map((key, value) => MapEntry('$key', value));
return EntityReference<T>.fromEntityMap(entityMapCast,
type: type,
typeName: typeName,
entityHandler: entityHandler,
entityProvider: entityProvider,
entityHandlerProvider: entityHandlerProvider,
entityFetcher: entityFetcher,
entityCache: entityCache,
checkGenericType: false)
._autoCast();
} else if (id != null) {
return EntityReference<T>.fromID(id,
type: type,
typeName: typeName,
entityHandler: entityHandler,
entityProvider: entityProvider,
entityHandlerProvider: entityHandlerProvider,
entityFetcher: entityFetcher,
entityCache: entityCache,
checkGenericType: false)
._autoCast();
} else {
return EntityReference<T>.asNull(
type: type,
typeName: typeName,
entityHandler: entityHandler,
entityProvider: entityProvider,
entityHandlerProvider: entityHandlerProvider,
entityFetcher: entityFetcher,
entityCache: entityCache,
checkGenericType: false)
._autoCast();
}
} else {
return EntityReference<T>.fromEntityMap(json,
type: type,
typeName: typeName,
entityHandler: entityHandler,
entityProvider: entityProvider,
entityHandlerProvider: entityHandlerProvider,
entityFetcher: entityFetcher,
entityCache: entityCache,
checkGenericType: false)
._autoCast();
}
}