EntityReferenceList<T>.from constructor

EntityReferenceList<T>.from(
  1. Object? o, {
  2. Type? type,
  3. String? typeName,
  4. EntityHandler<T>? entityHandler,
  5. EntityProvider? entityProvider,
  6. EntityHandlerProvider? entityHandlerProvider,
  7. EntityCache? entityCache,
  8. EntitiesFetcher<T>? entitiesFetcher,
})

Creates an EntityReferenceList from o trying to resolve it in the best way.

Implementation

factory EntityReferenceList.from(Object? o,
    {Type? type,
    String? typeName,
    EntityHandler<T>? entityHandler,
    EntityProvider? entityProvider,
    EntityHandlerProvider? entityHandlerProvider,
    EntityCache? entityCache,
    EntitiesFetcher<T>? entitiesFetcher}) {
  if (o == null) {
    return EntityReferenceList<T>.asNull(
            type: type,
            typeName: typeName,
            entityHandler: entityHandler,
            entityProvider: entityProvider,
            entitiesFetcher: entitiesFetcher,
            entityCache: entityCache,
            checkGenericType: false)
        ._autoCast();
  } else if (o is EntityReferenceList) {
    return o.cast<T>()._autoCast();
  } else if (o is List &&
      o.every((Object? e) => e == null || e.isEntityIDType)) {
    return EntityReferenceList<T>.fromIDs(o,
            type: type,
            typeName: typeName,
            entityHandler: entityHandler,
            entityProvider: entityProvider,
            entitiesFetcher: entitiesFetcher,
            entityCache: entityCache,
            checkGenericType: false)
        ._autoCast();
  } else if (o is Map<String, dynamic>) {
    return EntityReferenceList<T>.fromJson(o,
        type: type,
        typeName: typeName,
        entityHandler: entityHandler,
        entityProvider: entityProvider,
        entitiesFetcher: entitiesFetcher,
        entityCache: entityCache);
  } else if (o is List<T?>) {
    return EntityReferenceList<T>.fromEntities(o,
            type: type,
            typeName: typeName,
            entityHandler: entityHandler,
            entityProvider: entityProvider,
            entitiesFetcher: entitiesFetcher,
            entityCache: entityCache,
            checkGenericType: false)
        ._autoCast();
  } else if (o is T) {
    return EntityReferenceList<T>.fromEntities(<T>[o as T],
            type: type,
            typeName: typeName,
            entityHandler: entityHandler,
            entityProvider: entityProvider,
            entitiesFetcher: entitiesFetcher,
            entityCache: entityCache,
            checkGenericType: false)
        ._autoCast();
  }

  throw StateError(
      "`T`($T) and `o`($o) not compatible types. Can't resolve `EntityReferenceList`!");
}