我想知道在所有应用程序中访问登录用户的最佳实践是什么。
并且不要在所有初始化状态下都执行copy_sum
。
我有两个想法,创建一个单例,该单例在启动我的应用程序时初始化。
然后听FirebaseAuth.instance.currentUser().then((result) {...});
。
onAuthStateChanged
或者我看到了继承的小部件。但这只会共享我的用户的子窗口小部件,而不会在更改视图时共享。
我还想在整个应用程序中分享帖子列表。实际上,同一帖子可以在几页中显示,因此我想将当前显示的所有帖子保留在内存中,以便每个帖子小部件都基于相同的变量。因此,视图上帖子的修改会反映在显示该帖子的每个视图上。 (目前,我已经将此列表作为每个视图的参数传递了,并且可以正常工作,但是我知道这样做不是正确的方法。)
有人知道最佳做法吗?
答案 0 :(得分:1)
最常见的选项是:
使用gcc
。虽然您明确表示不想执行此操作,但实际上,这是我建议的第一个实现,因为它最有可能为您提供最新的身份验证状态。
收听onAuthStateChanged
stream,这可以确保您还可以获取用户注销时的信息(例如:如果在Firebase控制台中禁用了其帐户)。这个工作比仅仅获得FirebaseAuth.instance.currentUser()
还要多。
在currentUser()
中传递当前用户值。我不太喜欢这种方法,因为它要求我编写Firebase已经完成的状态管理代码。
如果您倾向于不使用前两种方法之一,则需要仔细考虑为什么这样做,并验证这些假设。例如:两种方法均在首次调用后从本地身份验证状态开始工作,这意味着性能将与您自己实现的任何替代方法一样好。