跳至主內容

prefer_const_literals_to_create_immutables

使用 'const' 字面量作為 '@immutable' 類的建構函式引數。

描述

#

當非 const 的列表、Map 或 Set 字面量作為引數傳遞給標註有 @immutable 的類中宣告的建構函式時,分析器會產生此診斷。

示例

#

以下程式碼會產生此診斷,因為列表字面量 ([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]);