跳到主要内容

无效_字段_

记录字段名不能是美元符号后跟一个整数,如果该整数是位置字段的索引。

记录字段名不能是私有的。

记录字段名不能与来自 'Object' 的成员同名。

描述

#

当记录字面量或记录类型注解具有无效名称的字段时,分析器会产生此诊断。如果字段名是以下情况则无效:

  • 私有的(以 _ 开头)
  • Object 上定义的某个成员同名
  • 与位置字段同名(如果该字段是指定名称的位置字段,则为例外)

示例

#

以下代码会产生此诊断,因为记录字面量有一个名为 toString 的字段,它是 Object 上定义的方法

dart
var r = (a: 1, toString: 4);

以下代码会产生此诊断,因为记录类型注解有一个名为 hashCode 的字段,它是 Object 上定义的 getter

dart
void f(({int a, int hashCode}) r) {}

以下代码会产生此诊断,因为记录字面量有一个名为 _a 的私有字段

dart
var r = (_a: 1, b: 2);

以下代码会产生此诊断,因为记录类型注解有一个名为 _a 的私有字段

dart
void f(({int _a, int b}) r) {}

以下代码会产生此诊断,因为记录字面量有一个名为 $1 的字段,该名称也是不同位置参数的名称

dart
var r = (2, $1: 1);

以下代码会产生此诊断,因为记录类型注解有一个名为 $1 的字段,该名称也是不同位置参数的名称

dart
void f((int, String, {int $1}) r) {}

常见修复

#

重命名字段

dart
var r = (a: 1, d: 4);