跳到主要内容

getter_not_subtype_setter_types

getter '{0}' 的返回类型 '{1}' 不是其 setter '{3}' 的类型 '{2}' 的子类型。

描述

#

当 getter 的返回类型不是同名 setter 的参数类型的子类型时,分析器会生成此诊断信息。

无论 getter 和 setter 在同一类中,还是其中一个在另一个的超类中,子类型关系都是必需的。

示例

#

以下代码会生成此诊断信息,因为 getter x 的返回类型是 num,setter x 的参数类型是 int,而 num 不是 int 的子类型

dart
class C {
  num get x => 0;

  set x(int y) {}
}

常见修复

#

如果 getter 的类型正确,则更改 setter 的类型

dart
class C {
  num get x => 0;

  set x(num y) {}
}

如果 setter 的类型正确,则更改 getter 的类型

dart
class C {
  int get x => 0;

  set x(int y) {}
}