Firebase 对同一流使用StreamBuilder及其对firestore读取次数的影响

Firebase 对同一流使用StreamBuilder及其对firestore读取次数的影响,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我有以下getter函数从firestore获取用户配置文件数据 Stream<UserProfile> get userProfile { FirebaseAuth _auth = FirebaseAuth.instance; try { return _auth.currentUser == null ? null : _firestore .collection('users')

我有以下getter函数从firestore获取用户配置文件数据

  Stream<UserProfile> get userProfile {
    FirebaseAuth _auth = FirebaseAuth.instance;
    try {
      return _auth.currentUser == null
          ? null
          : _firestore
              .collection('users')
              .doc(_auth.currentUser.uid)
              .snapshots()
              .map(
                (DocumentSnapshot documentSnapshot) => UserProfile(
                  uid: documentSnapshot.data()['uid'],
                  email: documentSnapshot.data()['email'],
                ),
              );
    } on Exception catch (e) {
      print(e);
      return null;
    }
  }
Stream-get-userProfile{
FirebaseAuth _auth=FirebaseAuth.instance;
试一试{
返回_auth.currentUser==null
无效的
:_消防商店
.collection('用户')
.doc(_auth.currentUser.uid)
.快照()
.地图(
(DocumentSnapshot DocumentSnapshot)=>UserProfile(
uid:documentSnapshot.data()['uid'],
电子邮件:documentSnapshot.data()['email'],
),
);
}关于异常捕获(e){
印刷品(e);
返回null;
}
}
据我所知,此getter稍后将与StreamBuilder一起使用。调用此getter将使我在firebase firestore中的读取次数增加1,并且仅当此特定用户数据更改(更新时)时,读取次数才会增加


但是如果我在两个不同的flatter文件/小部件中调用这个getter,读取的数量会发生什么变化?因为我在两个不同的地方调用它,这是否意味着从每个唯一文件进行的每次调用的读取次数增加1?或者,是否因为我使用相同的getter(即使我在不同的地方调用它),所以对我而言,它的总体读取成本为1?

每次调用此代码时:

          _firestore
              .collection('users')
              .doc(_auth.currentUser.uid)
              .snapshots()
它将花费至少1次读取,再加上每次文档更改时的更多读取。不管代码是否在getter函数中,或者您选择何种方式进行此查询,其成本都是相同的


如果您希望所有代码共享一个流,那么您应该只执行一次查询,存储流,并独立提供该流。

这是一个很好的信息。非常感谢。