Can';t将Firebaseuser对象以颤振方式传递到新屏幕

Can';t将Firebaseuser对象以颤振方式传递到新屏幕,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,在注册屏幕中创建用户之后,我想将用户对象传递到一个新屏幕。但是用户对象在新屏幕中始终为空,尽管用户创建成功。我知道当前用户可以通过FirebaseAuth.instance.currentUser()访问。但是,当用户对象从注册屏幕传递到新屏幕时,为什么它是空的 Future<FirebaseUser> signUpUserWithEmailPass( String email, String pass) async { try { var au

在注册屏幕中创建用户之后,我想将用户对象传递到一个新屏幕。但是用户对象在新屏幕中始终为空,尽管用户创建成功。我知道当前用户可以通过
FirebaseAuth.instance.currentUser()
访问。但是,当用户对象从注册屏幕传递到新屏幕时,为什么它是空的

   Future<FirebaseUser> signUpUserWithEmailPass(
      String email, String pass) async {
    try {
      var authResult = await firebaseAuth.createUserWithEmailAndPassword(
        email: email,
        password: pass,
      );
      print("On Try");
      return authResult.user;
    } on PlatformException catch (error) {
      throw Exception(errors.toString());
    }
  }
更新:已解决
我使用的是BLoC模式&我忘了在state类的构造函数中设置user对象。这实际上是在制造问题

它是空的,因为它是
异步的
,方法
signUpUserWithEmailPass
返回一个
未来的
,然后当您调用它时,您可以将结果传递到
导航主屏幕

signUpUserWithEmailPass.then((result) => {
      print(result);
      navigateToHomePage(context,result);
  });

这可能是由于异步功能造成的。在得到结果之前,用户对象可能已经被传递了

因此,请先等待
signUpUserWithEmailPass()
函数完成,然后将其分配给用户对象,如下所示:

user = await signUpUserWithEmailPass("email", "password");
navigateToHomePage(context, user);
为此,必须使父函数
异步

否则,请执行以下操作:

signUpUserWithEmailPass.then((user) {
  navigateToHomePage(context, user);
});

希望有帮助

是的,它是异步的。我使用BLoC模式创建用户。因此,基本上导航是基于状态进行的。如果状态为UserCreationSuccessful,则只有这样我才能导航。用户创建是在bloc类中完成的!我只是错过了在状态类的构造函数中设置用户对象。这实际上是在制造问题!您是否正在将bloc模式与provider一起使用?用于bloc模式的Flatter_bloc包
signUpUserWithEmailPass.then((user) {
  navigateToHomePage(context, user);
});