首页 > 解决方案 > 在初始化时读取用户的最佳方式

问题描述

我有一个问题,当我在我的应用程序中查看家庭视图时,我必须从 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;

  }

标签: firebasedartflutter

解决方案


我假设你正在寻找这样的东西?

  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;
       });
    });
  }

推荐阅读