在执行动作飞镖之前等待一个功能完成的错误

时间:2018-07-22 14:16:42

标签: dart firebase-authentication flutter

我在检查返回的用户uid是否不为null后尝试推送新页面。我认为问题在于,当页面被推送时,用户uid始终为null,因此它总是推送至错误页面。如何解决此问题,或者有更好的方法从尝试做的事情中获得相似的结果

    Future<FirebaseUser> signInUser([var myuserdata,var mypasswrd
      ,frouter,srouter]
      )async{
      FirebaseUser firebaseUser = await FirebaseAuth.instance
      .signInWithEmailAndPassword(email:myuserdata,password:mypasswrd).then((onValue){
          if(onValue.uid != null){
// main page
        print('object at non-null uid ${onValue.uid}');
        frouter;
      } 
     if(onValue.uid == null){
//error page
        srouter;
      print('object at null uid ${onValue.uid}');
      } 
      });
      print('user id :${firebaseUser.uid}');
    return firebaseUser;
    }

Exception has occurred. NoSuchMethodError: The getter 'uid' was called on null. Receiver: null Tried calling: uid

I/flutter ( 8462): object at non-null uid q0q9vYK7AsPBrVpRQUwH04jyCp22

1 个答案:

答案 0 :(得分:0)

您的代码中的异步处理似乎存在一些问题。 试试这个希望对您有帮助的人。

final FirebaseAuth _auth = FirebaseAuth.instance;

Future<FirebaseUser> signInUser([var myuserdata,var mypasswrd
      ,frouter,srouter]
      )async{

      FirebaseUser firebaseUser =  
               await _auth.signInWithEmailAndPassword(email:myuserdata,password:mypasswrd);

       if(firebaseUser .uid != null){
        // main page
        print('object at non-null uid ${onValue.uid}');
        frouter;
       } 
       else if(firebaseUser .uid == null){
        //error page
        srouter;
        print('object at null uid ${onValue.uid}');
       } 
      });
      print('user id :${firebaseUser.uid}');
    return firebaseUser;
    }