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

prefer_const_literals_to_create_immutables

'@immutable' クラスのコンストラクタの引数には、'const' リテラルを使用してください。

説明

#

この診断は、`@immutable` アノテーションが付いたクラスで宣言されたコンストラクタに、const ではないリスト、マップ、またはセットのリテラルが引数として渡された場合に、アナライザーによって生成されます。

#

次のコードは、リストリテラル ([1]) がイミュータブルクラスのコンストラクタに渡されていますが、定数リストではないため、この診断を生成します。

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

@immutable
class C {
  final f;

  const C(this.f);
}

C c = C([1]);

一般的な修正

#

コンテキストを定数コンテキストにできる場合は、そうしてください。

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

@immutable
class C {
  final f;

  const C(this.f);
}

const C c = C([1]);

コンテキストを定数コンテキストにできないが、コンストラクタを `const` を使用して呼び出すことができる場合は、コンストラクタの呼び出しの前に `const` を追加してください。

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

@immutable
class C {
  final f;

  const C(this.f);
}

C c = const C([1]);

コンテキストを定数コンテキストにできず、コンストラクタを `const` を使用して呼び出すことができない場合は、コレクションリテラルの前に `const` キーワードを追加してください。

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

@immutable
class C {
  final f;

  const C(this.f);
}

C c = C(const [1]);