【问题标题】:Best way to read a user on init在初始化时读取用户的最佳方式
【发布时间】:2026-01-16 08:40:01
【问题描述】:

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

  }

【问题讨论】:

  • 为什么它被标记为ios

标签: firebase dart flutter


【解决方案1】:

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

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

【讨论】:

    最近更新 更多