Abstract implementation of a list.
ListBase
can be used as a base class for implementing the List
interface.
This class 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 base class 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 list 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 ListBase
.
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
.
- Implemented types
-
- List<
E>
- List<
- Implementers
- Available Extensions
Constructors
- ListBase()
-
const
Properties
- first ↔ E
-
The first element.
read / writeoverride
- hashCode → int
-
The hash code for this object.
read-onlyinherited
- isEmpty → bool
-
Whether this collection has no elements.
read-onlyoverride
- isNotEmpty → bool
-
Whether this collection has at least one element.
read-onlyoverride
-
iterator
→ Iterator<
E> -
A new
Iterator
that allows iterating the elements of thisIterable
.read-onlyoverride - last ↔ E
-
The last element.
read / writeoverride
- length ↔ int
-
The number of objects in this list.
read / writeinherited
-
reversed
→ Iterable<
E> -
An Iterable of the objects in this list in reverse order.
read-onlyoverride
- runtimeType → Type
-
A representation of the runtime type of the object.
read-onlyinherited
- single → E
-
Checks that this iterable has only one element, and returns that element.
read-onlyoverride
Methods
-
add(
E element) → void -
Adds
value
to the end of this list, extending the length by one.override -
addAll(
Iterable< E> iterable) → void -
Appends all objects of
iterable
to the end of this list.override -
any(
bool test(E element)) → bool -
Checks whether any element of this iterable satisfies
test
.override -
asMap(
) → Map< int, E> -
An unmodifiable Map view of this list.
override
-
cast<
R> () → List< R> -
Returns a view of this list as a list of
R
instances.override -
clear(
) → void -
Removes all objects from this list; the length of the list becomes zero.
override
-
contains(
Object? element) → bool -
Whether the collection contains an element equal to
element
.override -
elementAt(
int index) → E -
Returns the
index
th element.override -
every(
bool test(E element)) → bool -
Checks whether every element of this iterable satisfies
test
.override -
expand<
T> (Iterable< T> f(E element)) → Iterable<T> -
Expands each element of this Iterable into zero or more elements.
override
-
fillRange(
int start, int end, [E? fill]) → void -
Overwrites a range of elements with
fillValue
.override -
firstWhere(
bool test(E element), {E orElse()?}) → E -
The first element that satisfies the given predicate
test
.override -
fold<
T> (T initialValue, T combine(T previousValue, E element)) → T -
Reduces a collection to a single value by iteratively combining each
element of the collection with an existing value
override
-
followedBy(
Iterable< E> other) → Iterable<E> -
Creates the lazy concatenation of this iterable and
other
.override -
forEach(
void action(E element)) → void -
Invokes
action
on each element of this iterable in iteration order.override -
getRange(
int start, int end) → Iterable< E> -
Creates an Iterable that iterates over a range of elements.
override
-
indexOf(
Object? element, [int start = 0]) → int -
The first index of
element
in this list.override -
indexWhere(
bool test(E element), [int start = 0]) → int -
The first index in the list that satisfies the provided
test
.override -
insert(
int index, E element) → void -
Inserts
element
at positionindex
in this list.override -
insertAll(
int index, Iterable< E> iterable) → void -
Inserts all objects of
iterable
at positionindex
in this list.override -
join(
[String separator = ""]) → String -
Converts each element to a String and concatenates the strings.
override
-
lastIndexOf(
Object? element, [int? start]) → int -
The last index of
element
in this list.override -
lastIndexWhere(
bool test(E element), [int? start]) → int -
The last index in the list that satisfies the provided
test
.override -
lastWhere(
bool test(E element), {E orElse()?}) → E -
The last element that satisfies the given predicate
test
.override -
map<
T> (T f(E element)) → Iterable< T> -
The current elements of this iterable modified by
toElement
.override -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
reduce(
E combine(E previousValue, E element)) → E -
Reduces a collection to a single value by iteratively combining elements
of the collection using the provided function.
override
-
remove(
Object? element) → bool -
Removes the first occurrence of
value
from this list.override -
removeAt(
int index) → E -
Removes the object at position
index
from this list.override -
removeLast(
) → E -
Removes and returns the last object in this list.
override
-
removeRange(
int start, int end) → void -
Removes a range of elements from the list.
override
-
removeWhere(
bool test(E element)) → void -
Removes all objects from this list that satisfy
test
.override -
replaceRange(
int start, int end, Iterable< E> newContents) → void -
Replaces a range of elements with the elements of
replacements
.override -
retainWhere(
bool test(E element)) → void -
Removes all objects from this list that fail to satisfy
test
.override -
setAll(
int index, Iterable< E> iterable) → void -
Overwrites elements with the objects of
iterable
.override -
setRange(
int start, int end, Iterable< E> iterable, [int skipCount = 0]) → void -
Writes some elements of
iterable
into a range of this list.override -
shuffle(
[Random? random]) → void -
Shuffles the elements of this list randomly.
override
-
singleWhere(
bool test(E element), {E orElse()?}) → E -
The single element that satisfies
test
.override -
skip(
int count) → Iterable< E> -
Creates an Iterable that provides all but the first
count
elements.override -
skipWhile(
bool test(E element)) → Iterable< E> -
Creates an
Iterable
that skips leading elements whiletest
is satisfied.override -
sort(
[int compare(E a, E b)?]) → void -
Sorts this list according to the order specified by the
compare
function.override -
sublist(
int start, [int? end]) → List< E> -
Returns a new list containing the elements between
start
andend
.override -
take(
int count) → Iterable< E> -
Creates a lazy iterable of the
count
first elements of this iterable.override -
takeWhile(
bool test(E element)) → Iterable< E> -
Creates a lazy iterable of the leading elements satisfying
test
.override -
toList(
{bool growable = true}) → List< E> -
Creates a List containing the elements of this Iterable.
override
-
toSet(
) → Set< E> -
Creates a Set containing the same elements as this iterable.
override
-
toString(
) → String -
A string representation of this object.
override
-
where(
bool test(E element)) → Iterable< E> -
Creates a new lazy Iterable with all elements that satisfy the
predicate
test
.override -
whereType<
T> () → Iterable< T> -
Creates a new lazy Iterable with all elements that have type
T
.override
Operators
-
operator +(
List< E> other) → List<E> -
Returns the concatenation of this list and
other
.override -
operator ==(
Object other) → bool -
The equality operator.
inherited
-
operator [](
int index) → E -
The object at the given
index
in the list.inherited -
operator []=(
int index, E value) → void -
Sets the value at the given
index
in the list tovalue
.inherited