Skip to main content

avoid_function_literals_in_foreach_calls

Learn about the avoid_function_literals_in_foreach_calls linter rule.

Stable
Recommended
Fix available

Avoid using forEach with a function literal.

Details

#

AVOID using forEach with a function literal.

The for loop enables a developer to be clear and explicit as to their intent. A return in the body of the for loop returns from the body of the function, where as a return in the body of the forEach closure only returns a value for that iteration of the forEach. The body of a for loop can contain awaits, while the closure body of a forEach cannot.

BAD:

dart
people.forEach((person) {  ... }); 

GOOD:

dart
for (var person in people) {  ... } 

Enable

#

To enable the avoid_function_literals_in_foreach_calls rule, add avoid_function_literals_in_foreach_calls under linter > rules in your analysis_options.yaml file:

analysis_options.yaml
yaml
linter:  rules:  - avoid_function_literals_in_foreach_calls 

If you're instead using the YAML map syntax to configure linter rules, add avoid_function_literals_in_foreach_calls: true under linter > rules:

analysis_options.yaml
yaml
linter:  rules:  avoid_function_literals_in_foreach_calls: true