Flutter: ожидание HTTP-запроса в цикле - PullRequest
0 голосов
/ 30 апреля 2020

При выполнении http asyn c запроса я столкнулся со странной проблемой. Я знаю причину сбоя, но не знаю, как это исправить. Вот мой код.

    Future userLogin() async{
 try{
    String email = emailController.text;
    String password = passwordController.text;
    var url = 'http://192.168.100.4:8080/myapp/loginnexec.php';

      // Store all data with Param Name.
      var data = {'email': email, 'password' : password };
     print(data);
      // Starting Web API Call.
      var response = await http.post(url, body: json.encode(data));

      // Getting Server response into variable.

      final message = loginFromJson(response.body);
    if(response.statusCode == 200){
        setState(() {
          visible = false;
        });

      }

    }
     }catch(e){
     .....
     }
    }

Если мой веб-сервер не работает или файл недоступен, он будет бесконечно l oop. Я имею в виду все время, что я могу видеть одни и те же JSON данные, которые это (var data = {'email': email, 'password': password}.

Я хочу знать, как я могу не позволяйте этому войти в al oop. Похоже, что он пытается связаться с веб-сервером для данных, и если он не получает данные, то пытается снова.

Я не уверен, что объяснил это правильно или нет.

Извините за мой плохой английский sh.

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете установить timeout на Future, чтобы оно разрешалось через определенное время:

await http.post('someurl').timeout(Duration(seconds: 5),onTimeout: (){
    throw Exception();
    //or you can also
    // return null;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...