Flutter Firebase RTDB onValue 多次触发

Flutter Firebase RTDB onValue triggered multiple times

我正在开发一个应用程序,它需要来自使用 Firebase RTDB 创建的数据库的实时数据。我使用 onValue 来获取实时数据,问题是当大量数据同时更改时会多次触发 onValue 并弄乱了我的数据处理系统。一直在尝试寻找解决方案,但仍未找到解决方案。任何帮助将不胜感激。这是代码:

await refConnection
        .child(user!.uid).orderByChild('date_created').onValue.forEach((element) {
          if (element.snapshot.value != null) {
            Map<dynamic, dynamic> connection = element.snapshot.value as Map<
                dynamic,
                dynamic>;
            print("Test: $connection");
            

            connection.forEach((key, value) {
              if (connection[key]['status'] == 'connected') {
                Provider.of<ContactDataProvider>(context, listen: false)
                    .addConnected(connection[key]);
              } else if (connection[key]['status'] == 'incoming_req') {
                Provider.of<ContactDataProvider>(context, listen: false)
                    .addIncoming(connection[key]);
              } else if (connection[key]['status'] == 'sent_req') {
                print(connection[key]);
                Provider.of<ContactDataProvider>(context, listen: false)
                    .addSent(connection[key]);
              }
            });

            setState();
          }
    });

您真的需要收听实时更新吗?如果没有,则尝试使用 get().

getting the value only once

解决方案:尝试不同的方法