跳到主要內容

late_final_local_already_assigned

late final 區域性變數已被賦值。

描述

#

當分析器能夠證明一個同時被標記為 latefinal 的區域性變數,在另一個賦值發生時已被賦值,分析器就會生成此診斷。

由於 final 變數只能被賦值一次,後續的賦值操作必然會失敗,因此會被標記。

示例

#

以下程式碼會生成此診斷,因為 final 變數 v 在兩個地方被賦值

dart
int f() {
  late final int v;
  v = 0;
  v += 1;
  return v;
}

常見修復方法

#

如果需要能夠重新為變數賦值,請移除 final 關鍵字

dart
int f() {
  late int v;
  v = 0;
  v += 1;
  return v;
}

如果不需要重新為變數賦值,請移除除第一次賦值之外的所有賦值操作

dart
int f() {
  late final int v;
  v = 0;
  return v;
}