Вход в систему успешен, даже если это неверный пользователь

#flutter #validation #authentication #sqflite

Вопрос:

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

db_service.dart

 Future<RegisterUser> getLogin(String user, String password) async {
    await DB.init();
    var res = await DB.rawQuery("userDetails WHERE emailId = '$user' and password = '$password'");

    if (res.length > 0) {
      return RegisterUser.fromMap(res.first);
    }

    return null;
  }
 

Логин пользователя.dart (Код для кнопки входа в систему)

 bool validateAndSave() {

    final form = _formKey.currentState;
    if (form.validate()) {
      form.save();
      return true;
    }
    return false;
  }
  void _submit(){
    final form = _formKey.currentState;
    var res;
    if (validateAndSave()) {
      setState(() {
        res=dbService.getLogin(_email, _password).then((value) {
          if(res!=0){
            FormHelper.showMessage(
              context,
              "Login",
              "Login Successfull",
              "Ok",
                  () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => People_List(),
                  ),
                );
              },
            );}
          else {
            FormHelper.showMessage(
                context,
                "Login",
                "Login not Successfull",
                "Ok", () {}

            );
          }
        });
      });


    }
  }
 

Комментарии:

1. Что делает эта линия ? if(res!=0) Вероятно, вы хотели написать if(value != null)

Ответ №1:

Похоже, вы неправильно используете функцию будущего.

 res= await dbService.getLogin(_email, _password);
if(res != 0){

} else {

}
 

Или

 dbService.getLogin(_email, _password).then((value) {
  if(value != 0){

  }else {

  }
}, onError(e){});