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

must_be_immutable

このクラス(またはこのクラスが継承しているクラス)は「@immutable」とマークされていますが、インスタンスフィールドの1つ以上が final ではありません: {0}

説明

#

アナライザーは、不変クラスが final ではないインスタンスフィールドを1つ以上定義している場合に、この診断を生成します。クラスが不変であるとは、immutable アノテーションを使用して不変であるとマークされているか、または不変クラスのサブクラスである場合です。

#

以下のコードは、フィールド x が final ではないため、この診断を生成します。

dart
import 'package:meta/meta.dart';

@immutable
class C {
  int x;

  C(this.x);
}

一般的な修正

#

クラスのインスタンスを不変にしたい場合は、final ではないすべてのフィールド宣言に final キーワードを追加してください。

dart
import 'package:meta/meta.dart';

@immutable
class C {
  final int x;

  C(this.x);
}

クラスのインスタンスを可変にしたい場合は、アノテーションを削除するか、アノテーションが継承されている場合は別のスーパークラスを選択してください。

dart
class C {
  int x;

  C(this.x);
}