Skip to main content

unnecessary_final

Stable
Fix available

Don't use final for local variables.

Details

#

Use var, not final, when declaring local variables.

Per Effective Dart, there are two styles in wide use. This rule enforces the var style. For the alternative style that prefers final, enable prefer_final_locals and prefer_final_in_for_each instead.

For fields, final is always recommended; see the rule prefer_final_fields.

BAD:

dart
void badMethod() {
  final label = 'Final or var?';
  for (final char in ['v', 'a', 'r']) {
    print(char);
  }
}

GOOD:

dart
void goodMethod() {
  var label = 'Final or var?';
  for (var char in ['v', 'a', 'r']) {
    print(char);
  }
}

Incompatible rules

#

The unnecessary_final rule is incompatible with the following rules:

Enable

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - unnecessary_final

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

analysis_options.yaml
yaml
linter:
  rules:
    unnecessary_final: true