目录

dart fix

dart fix 命令可以查找并修复两种类型的错误:

  • dart analyze 标识的分析错误,这些错误有相关的自动修复(有时称为 快速修复代码操作 )。

  • 更新到 Dart 和 Flutter SDK 的较新版本时,过时的 API 使用方式。

应用修复

#

要预览建议的更改,请使用 --dry-run 标志:

$ dart fix --dry-run

要应用建议的更改,请使用 --apply 标志:

$ dart fix --apply

自定义行为

#

只有当诊断程序识别出“问题”时, dart fix 命令才会应用修复。某些诊断程序(如编译错误)是隐式启用的,而其他诊断程序(如 lint)必须在 分析选项文件 中显式启用,因为这些程序的各个偏好设置各不相同。

有时,您可以通过启用其他 lint 来增加可以应用的修复数量。请注意,并非所有诊断都有相关的修复程序。

示例

#

假设您有这样的代码:

dart
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 引入了一种名为 super 初始化器的新的语言特性,它允许您以更紧凑的风格编写 Vector3d 的构造函数:

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

要启用 dart fix 以将现有代码升级到使用此特性,并确保分析器在您以后忘记使用它时警告您,请按如下所示配置您的 analysis_options.yaml 文件:

yaml
linter:
  rules:
    - use_super_parameters

我们还需要确保代码启用了所需的 语言版本 。Super 初始化器是在 Dart 2.17 中引入的,因此请更新 pubspec.yaml 以在较低的 SDK 约束中至少具有该版本:

yaml
environment:
  sdk: ">=2.17.0 <4.0.0"

然后,查看建议的更改时,您应该看到以下内容:

$ 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

要了解有关自定义分析结果和行为的更多信息,请参阅 自定义静态分析

VS Code 支持

#

在 VS Code 中打开项目时,Dart 插件会扫描项目中 dart fix 可以修复的问题。如果它找到需要修复的问题,VS Code 会显示提示以提醒您。

VS Code notification about 'dart fix'

在运行 dart pub getdart pub upgrade 后,如果包更改添加了 dart fix 可以修复的问题,VS Code 也可能会显示此提示。

在运行 dart fix 之前,请保存所有文件。这确保 Dart 使用文件的最新版本。