dart fix

The dart fix command finds and fixes two types of issues:

  • Analysis issues identified by dart analyze that have associated automated fixes (sometimes called quick-fixes or code actions).

  • Outdated API usages when updating to newer releases of the Dart and Flutter SDKs.

Usage

To preview proposed changes, use the --dry-run flag:

$ dart fix --dry-run

To apply the proposed changes, use the --apply flag:

$ dart fix --apply

Customization

The dart fix command only applies fixes when there is a “problem” identified by a diagnostic. Some diagnostics, such as compilation errors, are implicitly enabled, while others, such as lints, must be explicitly enabled in the analysis options file, as individual preferences for these vary.

You can sometimes increase the number of fixes that can be applied by enabling additional lints. Note that not all diagnostics have associated fixes.

Example

Imagine you have code like this:

class Vector2d {
  final double x, y;
  Vector2d(this.x, this.y);
}

class Vector3d extends Vector2d {
  final double z;
  Vector3d(final double x, final double y, this.z) : super(x, y);
}

Dart 2.17 introduced a new language feature called super initializers, which allows you to write the constructor of Vector3d with a more compact style:

class Vector3d extends Vector2d {
  final double z;
  Vector3d(super.x, super.y, this.z);
}

To enable dart fix to upgrade existing code to use this feature, and to ensure that the analyzer warns you when you later forget to use it, configure your analysis_options.yaml file as follows:

linter:
  rules:
    - use_super_parameters

We also need to make sure the code enables the required language version. Super initializers were introduced in Dart 2.17, so update pubspec.yaml to have at least that in the lower SDK constraint:

environment:
  sdk: ">=2.17.0 <3.0.0"

You should then see the following when viewing the proposed changes:

$ dart fix --dry-run
Computing fixes in myapp (dry run)... 9.0s

1 proposed fixes in 1 files.

lib/myapp.dart
  use_super_parameters • 1 fix

To learn more about customizing analysis results and behavior, see Customizing static analysis.

VS Code

When you open a project in VS Code, the Dart plugin scans the project for issues that dart fix can repair. If it finds issues for repair, VS Code displays a prompt to remind you.

VS Code notification about 'dart fix'

After running dart pub get or dart pub upgrade, VS Code might also display this prompt if package changes add issues that dart fix can repair.

Save all of your files before running dart fix. This ensures that Dart uses the latest versions of your files.