lastIndexWhere method

  1. @override
int lastIndexWhere(
  1. bool test(
    1. T element
    ), [
  2. int? start
])
override

The last index in the list that satisfies the provided test.

Searches the list from index start to 0. The first time an object o is encountered so that test(o) is true, the index of o is returned. If start is omitted, it defaults to the length of the list.

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

Returns -1 if element is not found.

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

Implementation

@override
int lastIndexWhere(bool Function(T element) test, [int? start]) {
  for (final e in _list.getRange(_start, _end).indexed.skip(start ?? 0)) {
    if (test(e.$2)) {
      return e.$1;
    }
  }
  return -1;
}