內容

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 引進了一項名為「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

我們還需要確保程式碼啟用了必要的 語言版本。Dart 2.17 中引進了 super 初始值設定項,因此請更新 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 使用檔案的最新版本。