在init上读取用户的最佳方法

时间:2018-10-04 05:50:20

标签: firebase dart flutter

我有一个问题,当我在应用程序中查看房屋的视图时,必须在获取名称为null时从Firebase实例化用户。 我不知道如何带来用户并期望它异步加载,因为窗口小部件的初始状态不允许异步标记。 如果我将其分配给“然后”,则它也为空

谢谢!

//Home Widget State

User currentUser = widget.userController.getCurrentUser(); //ERROR


//CONTROLLER

Future<User> getCurrentUser() async {

    User user =  await _db.collection('users').document(await getCurrentUserUID()).get().then((snapshot){
      return User.fromJson(snapshot.data);
    });

    print(user.toString());

    return user;

  }

1 个答案:

答案 0 :(得分:0)

我假设您正在寻找类似的东西?

  Map _userProfile;

  @override
  void initState() {
    super.initState();
    FirebaseAuth.instance.onAuthStateChanged.listen((user) {
      if(user != null) _getUserProfile(user.uid);
    });
  }

  void getUserProfile(String uid) {
    _db.collection('users').document(uid).get().then((snapshot){
       setState(() {
         _userProfile = snapshot.data;
       });
    });
  }