Where in Dart

Where in Dart: Filtering Collections Using the where Method#

About#

The where method in Dart is used to filter elements in a collection based on a condition. It returns a new iterable that contains only the elements that satisfy the provided predicate (a boolean test). This is commonly used in lists, sets, and other iterable collections to extract elements that meet certain criteria without modifying the original collection.

How It Works#

The where method takes a function as a parameter, known as a predicate, which evaluates each element of the collection. If the predicate returns true, the element is included in the returned iterable. If it returns false, the element is excluded.

  • Input: A collection (e.g., List, Set) and a condition (predicate).
  • Output: A filtered iterable with elements that satisfy the condition.

How to Use#

The where method is called on an iterable collection, and you pass a function that defines the condition to filter elements. The method does not modify the original collection; it returns a new iterable instead.

Syntax:#

Iterable<E> where(bool test(E element));

test: A function that takes an element from the collection and returns true or false based on the condition you define.

Steps to use:#

  • Define the condition in a function or use an inline anonymous function (lambda).
  • Call where on the collection, passing in the condition function.
  • The result is a filtered iterable, which can be converted to a list or set if needed.

Example#

Example 1: Filtering a List of Numbers Filter out numbers greater than 5 from a list of integers.

void main() {
  List<int> numbers = [1, 2, 6, 8, 3, 5];
  Iterable<int> filteredNumbers = numbers.where((num) => num > 5);

  print(filteredNumbers.toList()); // Output: [6, 8]
}

Example 2: Filtering a Set of Strings#

Filter out strings that start with the letter ‘A’ from a set.

void main() {
  Set<String> names = {'Alice', 'Bob', 'Alex', 'Charlie'};
  Iterable<String> filteredNames = names.where((name) => name.startsWith('A'));

  print(filteredNames.toList()); // Output: ['Alice', 'Alex']
}

In these examples, the where method is used to filter collections based on a custom condition. You can use this method to create new subsets of data without altering the original collection.