lastIndexWhere method Null safety

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

Returns 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.

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

Returns -1 if element is not found.

notes.lastIndexWhere((note) => note.startsWith('k'));    // -1

Implementation

int lastIndexWhere(bool test(E element), [int? start]) {
  if (start == null || start >= this.length) start = this.length - 1;

  // TODO(38493): The previous line should promote.
  if (start == null) throw "!";

  for (int i = start; i >= 0; i--) {
    if (test(this[i])) return i;
  }
  return -1;
}