#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){});