type '(SearchOkResponse) => Iterable' is not a subtype of type '(IOkResponse) => Iterable'

Всем доброго времени суток!)

Есть базовый класс IOkResponse:

class IOkResponse {}

Есть 2 класса, которые его реализуют - SearchOkResponse и MovieOkResponse. Например, SearchOkResponse:

class SearchOkResponse implements IOkResponse {
  final List<Map<String, String>> data;
  final int totalResults;

  const SearchOkResponse(this.data, this.totalResults);

  @override
  String toString() {
    return '''SearchOkResponse{
        data: $data,
        totalResults: $totalResults,
      }''';
  }
}

Использую Redux (перехожу с React Native, решил переходить постепенно, поэтому не блок) и redux-saga. Хочу написать сагу для обработки ответов от апишки. Сага выглядит так:

Iterable successResponseHandler({
  @required dynamic response,
  @required Iterable Function(IOkResponse apiResponse) onSuccess,
  @required Function(FailedResponse apiResponse) onFailed,
}) sync* { /* code */ }

При передаче для параметра onSuccess следующей саги:

(SearchOkResponse response) sync* { /* code */ }

получаю ошибку, указанную в заголовке: type '(SearchOkResponse) => Iterable<EffectWithResult>' is not a subtype of type '(IOkResponse) => Iterable<dynamic>'. Если в объявлении саги successResponseHandler для параметра onSuccess тип IOkResponse поменять на SearchOkResponse, то ошибки не будет. Но мне надо, чтобы onSuccess принимал другую сагу, которая принимает при вызове класс, который реализует класс IOkResponse.

Пожалуйста, объясните причину ошибки и как это можно исправить. Заранее благодарю за помощь)


Ответы (0 шт):