跳到主要内容

dart fix

dart fix 命令查找并修复两种类型的问题

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

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

应用修复

#

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

$ dart fix --dry-run

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

$ dart fix --apply

自定义行为

#

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

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

示例

#

假设您有如下代码

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 引入了一个名为超级初始化器的新语言特性,它允许您以更紧凑的风格编写 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

我们还需要确保代码启用了所需的语言版本。超级初始化器是在 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 使用最新版本的文件。