在我的Flutter项目中,我有以下代码:
if(await model.login(loginMailTextController.text,
loginPasswordTextController.text)){
Navigator.of(context).pushReplacementNamed("/main");
}
此代码在我的模型中调用此函数:
Future<bool> login(String mail, String password) async {
_auth.signInWithEmailAndPassword(email: mail, password: password);
return true; //Makes no sense, only for testing
}
这将按预期工作,并会调用navigator方法,但是如果我在signInWithEmailAndPassword
方法之前添加 await :
Future<bool> login(String mail, String password) async {
await _auth.signInWithEmailAndPassword(
email: mail, password: password);
return true; //Debugger won't stop there when a breakpoint is set
}
然后,if语句中的表达式为false。同样,当在标记的行上设置断点时,调试器也不会停止。在signInWithEmailAndPassword
方法上设置断点的工作方式类似于charme。
这是错误还是错误?
答案 0 :(得分:1)
“如果语句为假”看起来像await _auth.signInWithEmailAndPassword(
抛出,并且未报告异常或类似异常。
尝试用try / catch包装代码