ListMixin<E> typedef
Base mixin implementation of a List class.
ListMixin
can be used as a mixin to make a class implement
the List
interface.
This mixin implements all read operations using only the length
and
operator[]
and members. It implements write operations using those and
add
, length=
and operator[]=
.
Classes using this mixin should implement those five operations.
NOTICE: For backwards compatibility reasons,
there is a default implementation of add
which only works for lists with a nullable element type.
For lists with a non-nullable element type,
the add
method must be implemented.
NOTICE: Forwarding just the four length
and []
read/write operations
to a normal growable List (as created by a []
literal)
will give very bad performance for add
and addAll
operations
of ListMixin
.
These operations are implemented by
increasing the length of the list by one for each add
operation,
and repeatedly increasing the length of a growable list is not efficient.
To avoid this, override 'add' and 'addAll' to also forward directly
to the growable list, or, if possible, use DelegatingList
from
"package:collection/collection.dart" instead of a ListMixin
.
Implementation
// TODO: @Deprecated("Use List instead")
typedef ListMixin<E> = ListBase<E>;