跳到主要內容

duplicate_pattern_field

欄位 '{0}' 在此模式中已匹配。

描述

#

當記錄模式多次匹配同一欄位,或物件模式多次匹配同一 getter 時,分析器會生成此診斷。

示例

#

以下程式碼生成此診斷,因為記錄欄位 a 在同一記錄模式中匹配了兩次

dart
void f(({int a, int b}) r) {
  switch (r) {
    case (a: 1, a: 2):
      return;
  }
}

以下程式碼生成此診斷,因為 getter f 在同一物件模式中匹配了兩次

dart
void f(Object o) {
  switch (o) {
    case C(f: 1, f: 2):
      return;
  }
}
class C {
  int? f;
}

常見修復

#

如果模式應該匹配重複欄位的多個值,則使用邏輯或模式

dart
void f(({int a, int b}) r) {
  switch (r) {
    case (a: 1, b: _) || (a: 2, b: _):
      break;
  }
}

如果模式應該匹配多個欄位,則更改其中一個欄位的名稱

dart
void f(({int a, int b}) r) {
  switch (r) {
    case (a: 1, b: 2):
      return;
  }
}