跳到主要内容

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