Firebase 对同一流使用StreamBuilder及其对firestore读取次数的影响
我有以下getter函数从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')
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函数中,或者您选择何种方式进行此查询,其成本都是相同的
如果您希望所有代码共享一个流,那么您应该只执行一次查询,存储流,并独立提供该流。这是一个很好的信息。非常感谢。