メインコンテンツにスキップ

yield_of_invalid_type

yield 式で返される値の型 '{0}' は '{1}' に代入可能である必要があります。

'yield*' 式で推論される型 '{0}' は '{1}' に代入可能である必要があります。

説明

#

この診断は、yield または yield* 式で生成されるオブジェクトの型が、ジェネレータ (sync* または async* でマークされた関数またはメソッド) から返される Iterable または Stream 型が返すオブジェクトの型と一致しない場合に、アナライザによって生成されます。

#

次のコードは、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';
}