remove method

  1. @override
bool remove(
  1. Object? value
)
override

Removes the first occurrence of value from this list.

Returns true if value was in the list, false otherwise. The list must be growable.

final parts = <String>['head', 'shoulders', 'knees', 'toes'];
final retVal = parts.remove('head'); // true
print(parts); // [shoulders, knees, toes]

The method has no effect if value was not in the list.

final parts = <String>['shoulders', 'knees', 'toes'];
// Note: 'head' has already been removed.
final retVal = parts.remove('head'); // false
print(parts); // [shoulders, knees, toes]

Implementation

@override
bool remove(Object? value) {
  _Node<E>? current = _head;
  while (current != null) {
    if (current.value == value) {
      if (current.prev != null) {
        current.prev!.next = current.next;
      } else {
        _head = current.next; // Removing head
      }

      if (current.next != null) {
        current.next!.prev = current.prev;
      } else {
        _tail = current.prev; // Removing tail
      }
      _length--;
      return true;
    }
    current = current.next;
  }
  return false;
}