跳到主要內容

yield_of_invalid_type

型別為“{0}”的 yielded 值必須可以賦值給“{1}”。

由 'yield*' 表示式推斷出的型別“{0}”必須可以賦值給“{1}”。

描述

#

yieldyield* 表示式生成物件的型別與生成器(使用 sync*async* 標記的函式或方法)返回的 IterableStream 型別應返回的物件型別不匹配時,分析器會生成此診斷資訊。

示例

#

以下程式碼會產生此診斷資訊,因為 getter zero 被宣告為返回一個生成整數的 Iterable,但 yield 卻從該 iterable 返回了一個字串。

dart
Iterable<int> get zero sync* {
  yield '0';
}

常見修復方法

#

如果函式的返回型別正確,則修改關鍵字 yield 後面的表示式以返回正確的型別。

dart
Iterable<int> get zero sync* {
  yield 0;
}

如果 yield 後面的表示式正確,則更改函式的返回型別以允許它。

dart
Iterable<String> get zero sync* {
  yield '0';
}