Как повторить поток в RxDart? - PullRequest
0 голосов
/ 02 октября 2019

Я довольно новичок в Dart and Flutter и сталкиваюсь с препятствием.

Я занимаюсь разработкой приложения во флаттере, которое использует сетевые вызовы, аутентификацию токенов и т. Д. Я использую Dio и RxDart,Проблема в том, что по умолчанию мне нужно повторять каждый вызов API 5 раз, пока я не получу правильный ответ от сервера (например, когда я делаю вызов для ответа токен-сервера 202 для первого вызова и 200 для второго или третьего вызова). Как я могу повторить звонок?

Вот мой метод GET:

  Future _get(String url, {Map<String, dynamic> headers}) async {
    var response = await dio.get(url, options:
    new Options(headers: headers));
    return response.data;
  }

и метод, который возвращает наблюдаемое будущее:

 Observable get2(String url, {Map<String, dynamic> headers}) {
return Observable.retry(_sourceStream(url, headers: headers) , 5);

}

 Stream Function() _sourceStream(String url, {Map<String, dynamic> headers}) {
return  () => Observable.fromFuture(_get(url, headers: headers));

}

Я знаю, что в RxDart есть метод retryWhen factory, но я не смог правильно использовать его с моими методами. Кто-нибудь может помочь?

...