description

# ListMixin<E> class Null safety

Base 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 compatability 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`.

Implemented types
  - List<E>
Implementers
  - DomRectList
  - DomStringList
  - FileList
  - HtmlCollection
  - JsArray
  - LengthList
  - ListBase
  - MimeTypeArray
  - NodeList
  - NumberList
  - PluginArray
  - SourceBufferList
  - SpeechGrammarList
  - SqlResultSetRowList
  - StringList
  - TextTrackCueList
  - TextTrackList
  - TouchList
  - TransformList

## Constructors

ListMixin()

## Properties

first ↔ E
  Returns the first element. [...]
  read / write, override
hashCode → int
  The hash code for this object. [...]
  read-only, inherited
isEmpty → bool
  Returns `true` if there are no elements in this collection. [...]
  read-only, override
isNotEmpty → bool
  Returns true if there is at least one element in this collection. [...]
  read-only, override
iterator → Iterator<E>
  Returns a new `Iterator` that allows iterating the elements of this `Iterable`. [...]
  read-only, override
last ↔ E
  Returns the last element. [...]
  read / write, override
length ↔ int
  The number of objects in this list. [...]
  read / write, inherited
reversed → Iterable<E>
  Returns an Iterable of the objects in this list in reverse order.
  read-only, override
runtimeType → Type
  A representation of the runtime type of the object.
  read-only, inherited
single → E
  Checks that this iterable has only one element, and returns that element. [...]
  read-only, override

## 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>
  Returns an unmodifiable Map view of `this`. [...]
  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
  Returns true if 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
  Sets the objects in the range `start` inclusive to `end` exclusive to the given `fillValue`. [...]
  override
firstWhere(bool test(E element), {E orElse()}) → E
  Returns 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>
  Returns the lazy concatentation of this iterable and `other`. [...]
  override
forEach(void action(E element)) → void
  Applies the function `f` to each element of this collection in iteration order.
  override
getRange(int start, int end) → Iterable<E>
  Returns an Iterable that iterates over the objects in the range `start` inclusive to `end` exclusive. [...]
  override
indexOf(Object? element, [int start = 0]) → int
  Returns the first index of `element` in this list. [...]
  override
indexWhere(bool test(E element), [int start = 0]) → int
  Returns the first index in the list that satisfies the provided `test`. [...]
  override
insert(int index, E element) → void
  Inserts the object 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
  Returns the last index of `element` in this list. [...]
  override
lastIndexWhere(bool test(E element), [int? start]) → int
  Returns the last index in the list that satisfies the provided `test`. [...]
  override
lastWhere(bool test(E element), {E orElse()}) → E
  Returns the last element that satisfies the given predicate `test`. [...]
  override
map<T>(T f(E element)) → Iterable<T>
  Returns a new lazy Iterable with elements that are created by calling `f` on each element of this `Iterable` in iteration order. [...]
  override
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a non-existent 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
  Pops and returns the last object in this list. [...]
  override
removeRange(int start, int end) → void
  Removes the objects in the range `start` inclusive to `end` exclusive. [...]
  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
  Removes the objects in the range `start` inclusive to `end` exclusive and inserts the contents of `replacement` in its place. [...]
  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 objects of `this` with the objects of `iterable`, starting at position `index` in this list. [...]
  override
setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) → void
  Copies the objects of `iterable`, skipping `skipCount` objects first, into the range `start`, inclusive, to `end`, exclusive, of the list. [...]
  override
shuffle([Random? random]) → void
  Shuffles the elements of this list randomly.
  override
singleWhere(bool test(E element), {E orElse()}) → E
  Returns the single element that satisfies `test`. [...]
  override
skip(int count) → Iterable<E>
  Returns an Iterable that provides all but the first `count` elements. [...]
  override
skipWhile(bool test(E element)) → Iterable<E>
  Returns 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>
  Returns a lazy iterable of the `count` first elements of this iterable. [...]
  override
takeWhile(bool test(E element)) → Iterable<E>
  Returns 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
  Returns a string representation of this object.
  override
where(bool test(E element)) → Iterable<E>
  Returns a new lazy Iterable with all elements that satisfy the predicate `test`. [...]
  override
whereType<T>() → Iterable<T>
  Returns 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
  Returns the object at the given `index` in the list or throws a RangeError if `index` is out of bounds.
  inherited
operator []=(int index, E value) → void
  Sets the value at the given `index` in the list to `value` or throws a RangeError if `index` is out of bounds.
  inherited