Dart:在Stream中获取当前值

时间:2020-06-21 09:43:45

标签: flutter dart firebase-authentication stream

我正在制作Flutter应用程序,在其中使用Firebase Auth和Cloud Firestore。对于每个用户,我都有一个培训师文档,其中用户uid为文档ID。 当我更新培训师的数据时,我想确保仅可以修改当前登录用户的文档。

我有一个AuthService类,该类具有以下方法来获取当前用户:

Stream<FirebaseUser> get user {
  return _auth.onAuthStateChanged;
}

因此,当我想在DatabaseService类中更改培训者文档时,我想获取流的当前值以获取用户uid。我不认为我可以使用StreamBuilder或Provider,因为它不是Widget Tree,而是简单的Dart类。但是,我也不认为可以使用.listen(),因为我只想获取当前Stream的值,而不是全部。

如何获取Dart Stream的当前值?

1 个答案:

答案 0 :(得分:2)

您可能可以保留局部变量currentUser,收听Stream,并在Stream每次提供新值时更新currentUser。每当您想要获得当前用户时,请阅读currentUser