跳到主要内容

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;
  }
}