У меня проблемы с правильной аутентификацией пользователей Firebase с сообщениями об ошибках во Flutter - PullRequest
0 голосов
/ 04 апреля 2019

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

Сначала я попробовал это с Future, асинхронным и ожидающим внутри, но следуя обучающему уроку, и он не использовал его, поэтому я забрал его, но без разницы в том, как он работал.Единственное, что я делаю по-другому, чем в этом уроке, это то, что я также обновляю базу данных облачного хранилища.

loginUser(_email, _password) {
    formkey.currentState.save();
    if (formkey.currentState.validate()) {
      _auth
          .signInWithEmailAndPassword(email: _email, password: _password)
          .catchError((e) {
        Fluttertoast.showToast(
            msg: e.message,
            toastLength: Toast.LENGTH_SHORT,
            gravity: ToastGravity.TOP,
            timeInSecForIos: 5,
            backgroundColor: Colors.red,
            textColor: Colors.white,
            fontSize: 16.0
        );
      }).then((newUser) {
        var now = new DateTime.now();
        Firestore.instance
            .collection('users')
            .document(newUser.uid)
            .collection('userInfo')
            .document('userInfo')
            .setData({
          'Last login': now,
        })
            .then((onValue) {
          print('Created it in sub collection');
        }).catchError((e) {
          print('======Error======== ' + e);
        });
        getSignedInUser();
        Navigator.push(
          context,
          MaterialPageRoute(builder: (context) => MyApp()),
        );
      });


    }
  }


  getSignedInUser() async {
    mCurrentUser = await _auth.currentUser();
    DocumentSnapshot result = await Firestore.instance.collection('users')
        .document(mCurrentUser.uid).collection('profile').document('profile')
        .get();
    String myResult = result['First Name'];
    Fluttertoast.showToast(
        msg: "Welcome $myResult!",
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.TOP,
        timeInSecForIos: 1,
        backgroundColor: Colors.red,
        textColor: Colors.white,
        fontSize: 16.0
    );
  }
}

При первом вводе недопустимого электронного адреса я получаю сообщения об ошибках в консоли с указанием строки, гдеe.message называется нулевым.Если я снова нажму на кнопку «Войти», появится соответствующее сообщение об ошибке.Теперь, если я введу правильный адрес электронной почты, но неверный пароль (в том же запущенном экземпляре).он говорит, что имя пользователя не существует.Если я щелкну по нему еще раз, он выдаст правильное сообщение о неверном пароле.Есть идеи, что я делаю не так?Заранее спасибо

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