description

# ListBase<E> class abstract mixin

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>
Implementers
  - DomRectList
  - DomStringList
  - ElementList
  - FileList
  - HtmlCollection
  - JsArray
  - LengthList
  - MimeTypeArray
  - NodeList
  - NumberList
  - PluginArray
  - SourceBufferList
  - SpeechGrammarList
  - StringList
  - TextTrackCueList
  - TextTrackList
  - TouchList
  - TransformList
  - UnmodifiableListView
Available extensions
  - EnumByName
  - FutureIterable
  - IterableExtensions
  - IterableToJSIterable
  - ListToJSArray
  - NullableIterableExtensions

## Constructors

ListBase()
  const

## Properties

first ↔ E
  The first element.
  getter/setter pair override
firstOrNull → T?

  Available on Iterable<T>, provided by the IterableExtensions extension

  The first element of this iterator, or `null` if the iterable is empty.
  no setter
hashCode → int
  The hash code for this object.
  no setter inherited
indexed → Iterable<(int, T)>

  Available on Iterable<T>, provided by the IterableExtensions extension

  Pairs of elements of the indices and elements of this iterable.
  no setter
isEmpty → bool
  Whether this collection has no elements.
  no setter override
isNotEmpty → bool
  Whether this collection has at least one element.
  no setter override
iterator → Iterator<E>
  A new `Iterator` that allows iterating the elements of this `Iterable`.
  no setter override
last ↔ E
  The last element.
  getter/setter pair override
lastOrNull → T?

  Available on Iterable<T>, provided by the IterableExtensions extension

  The last element of this iterable, or `null` if the iterable is empty.
  no setter
length ↔ int
  The number of objects in this list.
  getter/setter pair inherited
nonNulls → Iterable<T>

  Available on Iterable<T?>, provided by the NullableIterableExtensions extension

  The non-`null` elements of this iterable.
  no setter
reversed → Iterable<E>
  An Iterable of the objects in this list in reverse order.
  no setter override
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited
single → E
  Checks that this iterable has only one element, and returns that element.
  no setter override
singleOrNull → T?

  Available on Iterable<T>, provided by the IterableExtensions extension

  The single element of this iterator, or `null`.
  no setter
toJS → JSArray<T>

  Available on List<T>, provided by the ListToJSArray extension

  Converts this List to a JSArray by either casting, unwrapping, or cloning the List.
  no setter
toJSIterable → JSIterable<T>

  Available on Iterable<T>, provided by the IterableToJSIterable extension

  A JSIterable wrapper that proxies to the Dart iterable API.
  no setter
toJSProxyOrRef → JSArray<T>

  Available on List<T>, provided by the ListToJSArray extension

  Converts this List to a JSArray by either casting, unwrapping, or proxying the List.
  no setter
wait → Future<List<T>>

  Available on Iterable<Future<T>>, provided by the FutureIterable extension

  Waits for futures in parallel.
  no setter

## 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
asNameMap() → Map<String, T>

  Available on Iterable<T>, provided by the EnumByName extension

  Creates a map from the names of enum values to the values.
byName(String name) → T

  Available on Iterable<T>, provided by the EnumByName extension

  Finds the enum value in this list with name `name`.
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
elementAtOrNull(int index) → T?

  Available on Iterable<T>, provided by the IterableExtensions extension

  The element at position `index` of this iterable, or `null`.
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 position `index` in this list.
  override
insertAll(int index, Iterable<E> iterable) → void
  Inserts all objects of `iterable` at position `index` 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 while `test` 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` and `end`.
  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 to `value`.
  inherited

## Static Methods

listToString(List<Object?> list) → String
  Converts a List to a String.