Mapping Through a List with Index and Value in Dart

Mapping Through a List with Index and Value in Dart

19 December 2024 Stephan Petzl Leave a comment Tech-Help

In Dart programming, it is often necessary to iterate through a list while keeping track of both the index and the value of each element. This task is commonly required for operations that depend on the position of elements within the list. Although Dart does not provide a direct method like Python’s enumerate(), there are several effective ways to achieve this functionality.

Using the asMap() Method

The asMap() method in Dart is a straightforward way to convert a list into a map, where the keys are the indices and the values are the elements. This method creates an immutable view of the list, allowing efficient iteration over both indices and values.

final sample = ['a', 'b', 'c'];
sample.asMap().forEach((index, value) => print('$index: $value'));

Leveraging Dart 3’s indexed Property

For developers using Dart 3, the indexed property provides a more elegant solution. This property allows you to iterate over a list while accessing both the index and value directly.

final sample = ['a', 'b', 'c'];
for (final (index, item) in sample.indexed) {
  print('$index: $item');
}

Using Extension Methods from the Collection Package

If you prefer using extension methods, the collection package offers mapIndexed and forEachIndexed, which are convenient for iterating with indices.

import 'package:collection/collection.dart';

void main() {
  final inputs = ['a', 'b', 'c', 'd', 'e', 'f'];
  inputs.forEachIndexed((index, element) {
    print('index: $index, element: $element');
  });
}

Implementing a Custom mapIndexed Function

For those who enjoy customizing solutions, creating a mapIndexed function can offer flexibility and control over the iteration process.

Iterable mapIndexed(Iterable items, E Function(int index, T item) f) sync* {
  var index = 0;
  for (final item in items) {
    yield f(index, item);
    index++;
  }
}

Streamlining Testing with Repeato

While iterating through lists is a common task in Dart programming, ensuring that your application runs smoothly across different devices and platforms is equally important. This is where Repeato, a no-code test automation tool, can be highly beneficial. Repeato allows you to create, run, and maintain automated tests for iOS and Android applications efficiently. Its use of computer vision and AI makes it particularly fast and effective for testing Flutter mobile apps. For more information on how Repeato can enhance your testing process, visit our Flutter Test Automation page.

Like this article? there’s more where that came from!