【问题标题】:Flutter Firebase update will not stop updating node?Flutter Firebase 更新不会停止更新节点?
【发布时间】:2018-05-07 15:30:27
【问题描述】:

我正在我的 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
              });
            }
          });
        }
      });

【问题讨论】:

    标签: firebase firebase-realtime-database int operators flutter


    【解决方案1】:

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

    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
          });
        }
      }
    }
    

    否则更新将导致listen(...) 的另一个事件,并且您有一个完美的循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多