Асинхронная проблема аутентификации флаттера - PullRequest
0 голосов
/ 27 декабря 2018

Hej,

Я создаю свое первое приложение Flutter, и я действительно новичок.Флаттер действительно классный.

Мое приложение должно войти в бэкэнд PHP для получения данных.Мне удалось заставить его работать между клиентом и сервером.Однако я обнаружил проблему на стороне клиента.Приложение должно ждать, пока не будет установлено соединение с бэкэндом.Я написал эту функцию как часть класса сеанса.

  int login (String username, String password, String url)  {
    String request = '$url/php/getAccess.php';
    String basicAuth = 'Basic ' + base64Encode(utf8.encode('$username:$password'));

    var response = await http.get(
      Uri.encodeFull(request),
      headers: {'authorization': basicAuth}
    );

    return response.statusCode;
  }

Проблема в том, что оператор await не принят компилятором.Я экспериментировал с тогдашней реализацией Future, такой как

  int login (String username, String password, String url) {
    String request = '$url/php/getAccess.php';
    String basicAuth = 'Basic ' + base64Encode(utf8.encode('$username:$password'));

    http.get(
      Uri.encodeFull(request),
      headers: {'authorization': basicAuth}
    )
    .then((response)
    {    
      return response.statusCode;
    });
    return -1;
  }

. Это означает, что функция возвращает -1 в первый раз, а через некоторое время (когда соединение с бэкендом установлено) возвращает правильный код состояния..

Как я могу решить эту проблему?

Заранее спасибо

...