Flutter-Backendless Логин пользователя __ Как проверить учетные данные пользователя (адрес электронной почты и пароль), чтобы перейти со страницы входа на домашнюю страницу - PullRequest
0 голосов
/ 17 октября 2019

Разработчик мобильных новичков здесь. Я пытаюсь реализовать логины пользователей с Backendless, но я не знаю, как лучше это сделать, особенно во избежание слишком большого количества вызовов API.

Я знаю, что здесь есть несколько злоупотреблений (особенно UX)но на самом деле я просто пытаюсь сначала разобраться в логике.

В следующем отрывке я пытаюсь войти в систему, и когда это будет сделано, дать пользователю доступ к приложению. Если это не удалось, Id хотел бы сделать предупреждение. Тем не менее, приложение показывает предупреждение независимо от правильности учетных данных. Это похоже на запуск if до того, как будет выполнен вход в систему.

Я не ищу обходного пути, я - разработчик noob и, честно говоря, не знаю лучшего способа справиться с этим. Я был бы очень признателен за помощь. Спасибо, ребята!

                              Backendless.userService.login(email, password).then((user) => boologin=true);
                              if (boologin==true) {
                                Navigator.push(
                                  context,
                                  MaterialPageRoute(
                                    builder: (context) => Home(),
                                  ),
                                );
                              } else {
                                showBasicAlert(context,
                                    "Wrong username or password", "");

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Как сказал Марат, большинство вызовов SDK Flutter Backendless являются асинхронными, и вы можете использовать ключевое слово await, чтобы дождаться завершения Future. Или вы можете выполнять действия в теле ответа.

Вот наиболее удобный способ обработки вызовов Backendless SDK:

void logIn(email, password) {
  Backendless.userService.login(email, password)
    .then((loggedInUser) {
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => Home(),
        ),
      );
    })
    .catchError((onError) {
      showBasicAlert(context, "Wrong username or password", "");
    });
}
0 голосов
/ 18 октября 2019

boologin всегда равно false, когда оно достигает if. Поскольку login является асинхронным и до установки boologin = true поток кода продолжается. Попробуйте изменить это как здесь

await Backendless.userService.login(email, password);

Затем установить boologin = true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...