首页 > 解决方案 > 如何检查 getLogin() 函数是否有效以显示登录是否成功

问题描述

我不明白如何检查 getLogin() 函数是否有效以及用户是否存在。我在哪里编写代码来显示消息。当我通过为该语句分配一个变量进行检查时

res=dbService.getLogin(_email, _password);然后它显示数据类型不匹配。你能帮我解决这个问题吗?我正在android studio中开发flutter应用程序并使用sqlite。请帮帮我,我被困两天了。

我在登录按钮上调用 _submit()

bool validateAndSave() {

    final form = _formKey.currentState;
    if (form.validate()) {
      form.save();
      return true;
    }
    return false;
  }
void _submit(){

    if (validateAndSave()) {
      setState(() {
        dbService.getLogin(_email, _password);
      });
    }
  }

这是 getLogin() 的 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;
  }

标签: flutterauthenticationsqflite

解决方案


您可以等待登录方法的结果。


void _submit() async {
  if (validateAndSave()) {
    var user = await dbService.getLogin(_email, _password);
    if (user != null) {
      Navigator.of(context).pushNamed('/home');
    } else {
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Sign in error")));
    }
  }
}

在这种情况下,如果成功,我会推送到主屏幕,并在出现错误时显示一个小吃栏。您可以将其调整为您的预期用例。


推荐阅读