In Dart, the List class has 4 methods that can help you find the index of a specific element in a list:
- indexOf: Returns the first index of the first element in the list that equals a given element. Returns- -1if nothing is found.
- indexWhere: Returns the first index in the list that satisfies the given conditions. If nothing is found, returns- -1.
- lastIndexOf: Returns the index of the last element in the list that equals a given element. Returns- -1if nothing is found.
- lastIndexWhere: Returns the last index in the list that satisfies the given conditions. If nothing is found, returns- -1.
The examples below will help you understand them better.
Example 1: Finding the Index of a specific Map in a List of Maps
Let’s say we have a list of people with information including id, name, and age. The first task is to find the index of the person whose id equals a given id (because the ids are unique we can have at most 1 result). The second task is to find the index of the last person whose age is greater than 80.
The code:
// KindaCode.com
import 'package:flutter/foundation.dart';
void main() {
  final List<Map<String, dynamic>> people = [
    {"id": "c1", "name": "John Doe", "age": 40},
    {"id": "c2", "name": "Kindacode.com", "age": 3},
    {"id": "c3", "name": "Pipi", "age": 1},
    {"id": "c4", "name": "Jane Doe", "age": 99},
  ];
  // Find index of the person whose id = c3
  final index1 = people.indexWhere((element) => element["id"] == "c3");
  if (index1 != -1) {
    if (kDebugMode) {
      print("Index $index1: ${people[index1]}");
    }
  }
  // Find the last index where age > 80
  final index2 = people.lastIndexWhere((element) => element["age"] > 80);
  if (index2 != -1) {
    if (kDebugMode) {
      print("Index $index2: ${people[index2]}");
    }
  }
}Output:
Index 2: {id: c3, name: Pipi, age: 1}
Index 3: {id: c4, name: Jane Doe, age: 99}Example 2: Finding the Index of a specific Object in a List of Objects
Let’s say we have a list of given books. The first job is to find the index of the book whose id equals a given id. The second job is to find the index of the first book in the list that has the title containing a given string.
The code:
// KindaCode.com
import 'package:flutter/foundation.dart';
// Define data structure for a single book
class Book {
  String id;
  String title;
  double price;
  Book(this.id, this.title, this.price);
}
void main() {
  final List<Book> books = [
    Book('b1', 'A Blue Novel', 0.99),
    Book('b2', 'A Green Novel', 1.99),
    Book('b3', 'A Cooking Hanbook', 2.99),
    Book('b4', 'Kindacode.com', 0.00)
  ];
  // Find the index of the book whose id is 'b4'
  final int index1 = books.indexWhere(((book) => book.id == 'b4'));
  if (index1 != -1) {
    if (kDebugMode) {
      print('Index: $index1');
      print('Title: ${books[index1].title}');
    }
  }
  // Find the index of the fist book whose title contains 'Novel'
  final int index2 = books.indexWhere((book) => book.title.contains('Novel'));
  if (index2 != -1) {
    if (kDebugMode) {
      print('Index: $index2');
      print('Title: ${books[index2].title}');
    }
  }
}Output:
Index: 3
Title: Kindacode.com
Index: 0
Title: A Blue NovelWrap Up
We’ve walked through a few examples of finding the index of a specific element in a list. If you’d like to learn more new and exciting stuff in Dart and Flutter, take a look at the following articles:
- Dart: Find List Elements that Satisfy Conditions
- Dart regex to validate US/CA phone numbers
- Dart: Capitalize the First Letter of Each Word in a String
- Dart & Flutter: 2 Ways to Count Words in a String
- 4 ways to convert Double to Int in Flutter & Dart
You can also check out our Flutter category page, or Dart category page for the latest tutorials and examples.



















