create<E, I extends Iterable<E> > static method
ContainerType
create<E, I extends Iterable<E> >({
- I init<
E>([ - Iterable<
E> ? iterable
- Iterable<
- bool add<
E>( - Collective<
E> collective, - I container,
- E e
- Collective<
- bool remove<
E>( - Collective<
E> collective, - I container,
- E e
- Collective<
- dynamic growable = true,
- bool identitySet = false,
Creates a ContainerType with custom behavior
Implementation
static ContainerType create<E, I extends Iterable<E>>({
I Function<E>([Iterable<E>? iterable])? init,
bool Function<E>(Collective<E> collective, I container, E e)? add,
bool Function<E>(Collective<E> collective, I container, E e)? remove,
growable = true,
bool identitySet = false
}) {
if (I == Set<E>) {
return [init,add,remove].every((a) => a == null)
? (identitySet ? ContainerType.identitySet : ContainerType.set)
: ContainerType._(init: init ?? (identitySet ? _identitySetCreate : _setCreate) , add: add ?? _setAdd, remove: remove ?? _setRemove);
}
if (I == Iterable<E>) {
return [init,add,remove].every((a) => a == null)
? ContainerType.iterable
: ContainerType._(init: init ?? _iterableCreate, add: add ?? _iterableAdd, remove: remove ?? _iterableRemove);
}
if (I == List<E>) {
return [init,add,remove].every((a) => a == null)
? (growable ? ContainerType.growableTrue : ContainerType.growableFalse)
: ContainerType._(init: init ?? (growable ? _growableTrueCreate : _growableFalseCreate), add: add ?? _setAdd, remove: remove ?? _setRemove);
}
if (I == Queue<E>) {
return [init,add,remove].every((a) => a == null)
? ContainerType.queue
: ContainerType._(init: init ?? _queueCreate, add: add ?? _queueAdd, remove: remove ?? _queueRemove);
}
return ContainerType._(init: init ?? _iterableCreate, add: add ?? _iterableAdd, remove: remove ?? _iterableRemove);
}