首页 > 解决方案 > 在整个应用程序中访问用户数据

问题描述

我正在使用 firebase 身份验证,在应用程序的所有页面中访问 userData 的最佳做法是,每次您必须订阅函数 currentUser 以获取 userID

 Future<FirebaseUser> get currentUser async {
   
    return  await _firebaseAuth.currentUser();
  }

或者我必须把它存放在一个地方

标签: firebaseflutterfirebase-authentication

解决方案


您可以FirebaseAuth.instance.currentUser()每次调用,也可以将其值存储在变量或本地存储中以传递它。

每次调用FirebaseAuth.instance.currentUser()可能会导致代码稍长,但在性能方面不会变慢,因为 Firebase 已经缓存了用户的身份验证状态。更好的是,Firebase 还自动保持其内部状态为最新状态,因此您每次调用时都能保证获得正确的状态FirebaseAuth.instance.currentUser()

将用户保留在局部变量中可能会稍微简化您的代码,但您必须确保您的变量不会与实际身份验证状态不同步。

FirebaseAuth.instance.currentUser()如果我只需要一两个地方的用户,我个人通常会这样做。如果我需要整个地方的用户,我会使用一个onAuthStateChanged监听器并将当前状态保存在一个成员字段中以便于访问。


推荐阅读