catch 块不返回空值
Posted
技术标签:
【中文标题】catch 块不返回空值【英文标题】:catch block not returning null value 【发布时间】:2020-12-23 22:20:51 【问题描述】:我正在为 android 开发一个颤振应用程序。我正在尝试通过电子邮件对用户进行身份验证。
Future signInwithEmailAndPassword(String email,String pass) async
try
UserCredential result = await _auth.signInWithEmailAndPassword(email: email, password: pass);
User user = result.user;
return _userFromFirebase(user);
catch(e)
print('error occured');
print(e.toString());
return null;
这是我使用电子邮件和密码对用户进行身份验证的方法。 问题是 catch 块被执行,错误信息打印在控制台,但是当我处理返回值时它没有返回空值
dynamic result = _authService.signInwithEmailAndPassword(email: email,pass: pass);
print(result);
if(result==null)
setState(()
print('inside setstate');
);
当我收到“动态结果”变量中的返回值并打印它时,它显示类型为 Future 。我希望 catch 块返回空值。 如何解决?
【问题讨论】:
试试这个:动态结果 = await _authService.signInwithEmailAndPassword(email: email,pass: pass); @gladiator 谢谢老兄,那是我犯的一个愚蠢的错误,我忘了补充,无论如何谢谢人:) 【参考方案1】:bcz 正在发生,它不等待结果,我们必须等到我们得到结果。所以,我们需要在它前面放一个 await 关键字。像这样
dynamic result = await _authService.signInwithEmailAndPassword(email: email,pass: pass);
【讨论】:
以上是关于catch 块不返回空值的主要内容,如果未能解决你的问题,请参考以下文章