Dart - "Эта функция имеет тип возврата FutureOr. > ', но не заканчивается оператором возврата ". - PullRequest
0 голосов
/ 03 августа 2020

Как исправить это предупреждение? Мне нужно показать диалоговое окно с предупреждением через 10 секунд

Future<Map> myMethod(myAPIUrl, headers) async {
  await http.get(myAPIUrl, headers: headers).then((response) {
  //my code
  });
}

myMethod('myapi.com')
            .timeout(Duration(seconds: 10), onTimeout: (){
            print('time timeout')
            })
            .then((response) {
        //mycode
        });

Thx you!

1 Ответ

1 голос
/ 03 августа 2020

Обратный вызов в функции timeout из Future ожидает, что будет возвращено значение того же типа, что и исходное Future. Это сделано для того, чтобы Future, возвращаемый обратным вызовом, всегда имел результат, вне зависимости от того, истекло ли время ожидания или нет.

Просто верните объект того же типа, что и ваше исходное будущее в обратном вызове timeout.

myMethod('myapi.com')
  .timeout(Duration(seconds: 10), onTimeout: (){
    print('time timeout');
    //show dialog code here
    return Map();
  })
  .then((response) {//Response will end up being an empty map on timeout and the return of `myMethod` otherwise
    //mycode
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...