firebase - 在整个应用程序中访问用户数据
问题描述
我正在使用 firebase 身份验证,在应用程序的所有页面中访问 userData 的最佳做法是,每次您必须订阅函数 currentUser 以获取 userID
Future<FirebaseUser> get currentUser async {
return await _firebaseAuth.currentUser();
}
或者我必须把它存放在一个地方
解决方案
您可以FirebaseAuth.instance.currentUser()
每次调用,也可以将其值存储在变量或本地存储中以传递它。
每次调用FirebaseAuth.instance.currentUser()
可能会导致代码稍长,但在性能方面不会变慢,因为 Firebase 已经缓存了用户的身份验证状态。更好的是,Firebase 还自动保持其内部状态为最新状态,因此您每次调用时都能保证获得正确的状态FirebaseAuth.instance.currentUser()
。
将用户保留在局部变量中可能会稍微简化您的代码,但您必须确保您的变量不会与实际身份验证状态不同步。
FirebaseAuth.instance.currentUser()
如果我只需要一两个地方的用户,我个人通常会这样做。如果我需要整个地方的用户,我会使用一个onAuthStateChanged
监听器并将当前状态保存在一个成员字段中以便于访问。
推荐阅读
- reactjs - 在 React Native Flat List 中实现一个计数器
- python - 使用 vscode 从主机调试在 docker 容器中运行的 python 代码
- python - Python中的帖子列表
- python - Python 编写一个 if 语句,从数据框列中提取文本并相应地移动值
- python - 在 keras 层中包装 python 可调用
- javascript - Thymeleaf-Spring-Boot中如何一个接一个地迭代?
- elasticsearch - 如何创建 Elasticsearch 时间点 (PIT)?
- python - 从具有特定环境的 make 运行 Python
- javascript - 在 Javascript 中添加事件监听器使我的(简单)数学加倍
- macos - 是否有任何选项可以使用电子检查 macOS 中的可访问权限状态(是否授予应用程序)