メインコンテンツにスキップ

無効な_フィールド_

レコードのフィールド名は、整数が位置フィールドのインデックスである場合に、ドル記号に続いて整数になることはできません。

レコードのフィールド名はプライベートにできません。

レコードのフィールド名は、`Object` のメンバーと同じ名前であることはできません。

説明

#

アナライザーは、レコードリテラルまたはレコード型注釈のいずれかに無効な名前のフィールドがある場合に、この診断を生成します。名前が無効なのは、それが次のいずれかである場合です。

  • プライベート(`_` で始まる)
  • `Object` で定義されているメンバーと同じ名前
  • 位置フィールドの名前と同じ(フィールドが指定された名前の位置フィールドである場合を除く)

#

次のコードは、レコードリテラルに `Object` で定義されているメソッドである `toString` という名前のフィールドがあるため、この診断を生成します。

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

次のコードは、レコード型注釈に `Object` で定義されているゲッターである `hashCode` という名前のフィールドがあるため、この診断を生成します。

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