跳到主要內容

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) {}
}