【问题标题】:Updating a StreamBuilder with new data in Flutter and Firestore在 Flutter 和 Firestore 中使用新数据更新 StreamBuilder
【发布时间】:2021-02-07 23:26:18
【问题描述】:

我在 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 中更改 minAgemaxAge 的值时,StreamBuilder 都会接收这些新参数并进行更新。这是否每次都会导致新的查询?如果是,该查询是每次都从数据库中获取所有对象,还是只从我的本地缓存中获取新对象和其余对象?

【问题讨论】:

  • 请编辑问题以显示实际进行查询的位置。您现在拥有的根本不直接涉及 Firestore。它被埋在 CarList 后面了吗?如果是这样,请编辑问题以显示该代码。
  • 我编辑了整个示例以便更好地理解。

标签: flutter google-cloud-firestore stream-builder


【解决方案1】:

是的,每次 minAge 或 maxAge 更改时,您的代码都会进行新查询。无法使用动态更改的过滤器更新查询。除非应用离线,否则查询不会使用缓存,或者您仅将查询定向到缓存(除非您知道所有可能的文档都已缓存,否则这不是一个好主意)。

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 2021-10-09
    • 2020-07-02
    • 1970-01-01
    • 2020-10-01
    • 2019-08-19
    • 2021-10-19
    • 2021-09-27
    • 2020-11-03
    相关资源
    最近更新 更多