firebase - 在初始化时读取用户的最佳方式
问题描述
我有一个问题,当我在我的应用程序中查看家庭视图时,我必须从 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;
}
解决方案
我假设你正在寻找这样的东西?
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;
});
});
}
推荐阅读
- amazon-web-services - Terraform 迭代嵌套对象和列表
- reactjs - 将 i18next 与 coreUI 反应侧边栏一起使用
- azure-devops - Azure DevOps 与 Microsoft Teams 的专用渠道集成
- jquery - 初始加载时 iframe 中的 Jquery Marquee 问题
- flutter - 颤振:在/替换底部导航栏上显示模态底部表(无障碍)
- angular - Formcontrol 禁用输入值预览
- c++ - VScode 给出错误消息“未捕获的语法错误:无效或意外令牌”
- c# - SAML 签名标签名称标准
- csv - 如果仅当相关性给出 not_found 值时(如果我们没有看到任何值),如何在下一个请求中传递 csv 文件
- django - 在 HTML 文件更改/条件 Django 调试模式下在 Docker 中重新加载 Gunicorn