[英]Updating a StreamBuilder with new data in Flutter and Firestore
我在 Flutter 中使用 StreamBuilder 来获取 firestore 集合users
的实时更新。 我想按年龄过滤用户。
StreamBuilder<List<User>>(
stream: UserList(minAge, maxAge),
builder: (context, snapshot) {
print(snapshot.data);
}
);
基本上,底层的 firestore 查询只是一个简单的where
查询。
FirebaseFirestore.instance
.collection('users')
.where('age', isGreaterThan: minAge)
.where('age', isLessThan: maxAge)
.snapshots();
每次用户在 UI 中更改minAge
或maxAge
的值时,StreamBuilder 都会收到这些新参数并进行更新。 这是否每次都会导致新的查询? 如果是,这个查询是每次都从数据库中获取所有对象,还是只从我的本地缓存中获取新对象和 rest?
是的,每次 minAge 或 maxAge 更改时,您的代码都会进行新查询。 无法使用动态更改的过滤器更新查询。 除非应用程序处于离线状态,否则查询不会使用缓存,或者您仅将查询定向到缓存(这不是一个好主意,除非您知道所有可能的文档都已缓存)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.