# indexWhere method

1. @override

int indexWhere(

1. bool test(
   1. E element
   ), [
2. int start = 0

])
override

The first index in the list that satisfies the provided `test`.

Searches the list from index `start` to the end of the list. The first time an object `o` is encountered so that `test(o)` is true, the index of `o` is returned.

    final notes = <String>['do', 're', 'mi', 're'];
    final first = notes.indexWhere((note) => note.startsWith('r')); // 1
    final second = notes.indexWhere((note) => note.startsWith('r'), 2); // 3

Returns -1 if `element` is not found.

    final notes = <String>['do', 're', 'mi', 're'];
    final index = notes.indexWhere((note) => note.startsWith('k')); // -1

## Implementation

    @override
    int indexWhere(bool Function(E element) test, [int start = 0]) {
      if (start < 0 || start >= _length && _length > 0) {
        return -1;
      }
      _Node<E>? current = _getNodeAt(start);
      for (int i = start; i < _length; i++) {
        if (test(current!.value)) {
          return i;
        }
        current = current.next;
      }
      return -1;
    }