【问题标题】:catch block not returning null valuecatch 块不返回空值
【发布时间】: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 谢谢老兄,那是我犯的一个愚蠢的错误,我忘了补充,无论如何谢谢人:)

标签: android ios flutter mobile


【解决方案1】:

bcz 正在发生,它不等待结果,我们必须等到我们得到结果。所以,我们需要在它前面放一个 await 关键字。像这样

dynamic result = await _authService.signInwithEmailAndPassword(email: email,pass: pass);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2012-05-18
    • 2017-05-15
    • 1970-01-01
    • 2016-05-06
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多