跳到主要內容

無效_欄位_

記錄欄位名不能是美元符號後跟一個整數,如果該整數是位置欄位的索引。

記錄欄位名不能是私有的。

記錄欄位名不能與來自 '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);