Firebase Stream - 知道初始提取何时完成?

Firebase Stream - Knowing when initial fetch complete?

我使用 Firebase 实时数据库 StreamSubscription 来监听事件,包括 onChildAddedonChildChanged

例如,这将获取 dbRef 处的所有现有条目以及流处于活动状态时的任何未来添加。

dbRef.onChildAdded.listen((event) async {
      String? key = event.snapshot.key;
      Map value = event.snapshot.value as Map;
      // Do stuff with object...
    });

但是,由于onChildAdded获取所有数据,然后进行后续添加,我不知道initial/existing数据何时完成获取。

我可以使用 dbRef.once() 来获取 initial/existing 数据,我会知道它何时完成,从而允许我呈现加载 UI。但是,在此之后使用 onChildAdded 会使我获取数据两次。

我怎样才能获取 initial/existing 数据,知道什么时候完成,以便可以适当地显示正在加载的 UI,然后收听将来添加的内容?

firebaser 在这里

如果您同时监听实时数据库中的子事件和值事件,更新的值事件只会在所有子事件都触发后触发。

知道这一点后,一个常见的技巧是同时监听 onChild...onValue 事件(或 once 未来)。然后,您可以 build/update 子处理程序中的状态,并在值处理程序中提交新状态。

SDK 会自动对同一 query/reference 上的侦听器进行重复数据删除,因此在同一 query/ref 上设置多个侦听器只会从服务器读取一次数据。