Flatter Firebase更新不会停止更新节点吗?

Flatter Firebase更新不会停止更新节点吗?,firebase,firebase-realtime-database,int,operators,flutter,Firebase,Firebase Realtime Database,Int,Operators,Flutter,我正在firebase节点中搜索一个int值并减小它。它成功地减少并将正确的信息打印到我的日志中一次。当我尝试用新的int更新节点时,它会重复,就像它在循环中的位置一样。我如何让它一次更新一次?这是我的密码 if (vidRank == 1) { await fb.child('UserVideo/${userid}/Vid1').onValue.listen((Event event){ if (event.snapshot != null){

我正在firebase节点中搜索一个int值并减小它。它成功地减少并将正确的信息打印到我的日志中一次。当我尝试用新的int更新节点时,它会重复,就像它在循环中的位置一样。我如何让它一次更新一次?这是我的密码

if (vidRank == 1) {
      await fb.child('UserVideo/${userid}/Vid1').onValue.listen((Event event){
        if (event.snapshot != null){
          var vid1id = event.snapshot.value['videoID'].toString();
          fb.child('NumberOnes/${vid1id}').onValue.listen((Event onesEvent){
            if (onesEvent.snapshot != null){
              var onesValue = (onesEvent.snapshot.value['Value'] as int);
              final vidValue = onesValue - 1;
              print("Inside  ${vidValue}");
              fb.child('NumberOnes/${vid1id}').update({
                'Value': vidValue
              });
            }
          });
        }
      });

如果只需要一个操作,请使用
.once()

否则,更新将导致另一个
listen(…)
事件,这样您就有了一个完美的循环

if (vidRank == 1) {
  var event = await fb.child('UserVideo/${userid}/Vid1').once();
  if (event.snapshot != null){
    var vid1id = event.snapshot.value['videoID'].toString();
    var onesEvent = await fb.child('NumberOnes/${vid1id}').once();
    if (onesEvent.snapshot != null){
      var onesValue = (onesEvent.snapshot.value['Value'] as int);
      final vidValue = onesValue - 1;
      print("Inside  ${vidValue}");
      fb.child('NumberOnes/${vid1id}').update({
        'Value': vidValue
      });
    }
  }
}