description

# 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;
    }