Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
颤振+;Firebase-计算剩余时间_Firebase_Flutter_Firebase Realtime Database - Fatal编程技术网

颤振+;Firebase-计算剩余时间

颤振+;Firebase-计算剩余时间,firebase,flutter,firebase-realtime-database,Firebase,Flutter,Firebase Realtime Database,我正试图计算一篇文章被添加到数据库中所剩的时间。我希望多个设备看到相同的倒计时计时器 round { seconds: 5, time: 1619971281887 (ServerValue.timstamp) } 并使用以下代码计算剩余时间。此代码是中代码的改编 如果代码正在运行,而您不确定它为什么在运行,那么最好的方法是使用调试器并查看何时调用代码 给定您的代码,它将在出现新事件时更新,并启动新计时器。如果您的onValue被多次调用,则表示数据库中的值正在更新。您共享的代码不知道

我正试图计算一篇文章被添加到数据库中所剩的时间。我希望多个设备看到相同的倒计时计时器

round {
  seconds: 5,
  time: 1619971281887 (ServerValue.timstamp)
}
并使用以下代码计算剩余时间。此代码是中代码的改编


如果代码正在运行,而您不确定它为什么在运行,那么最好的方法是使用调试器并查看何时调用代码


给定您的代码,它将在出现新事件时更新,并启动新计时器。

如果您的
onValue
被多次调用,则表示数据库中的值正在更新。您共享的代码不知道这些更新是如何发生的,因此我建议您在代码的其余部分搜索这些写操作

您还应该能够通过查看Firebase控制台中的节点来查看更新。这使您能够准确地看到更新发生的时间,并且可能更容易找到sour.ce


最后,如果您不关心更新,可以使用
once()
而不是onValue从数据库中只获取一次值。

如果您的
onValue
被多次调用,则表示数据库中的值正在更新。您共享的代码不知道这些更新是如何发生的,因此我建议您在代码的其余部分搜索这些写操作。您还应该能够通过查看Firebase控制台中的节点来查看更新。最后,如果您不关心更新,可以使用
once()
而不是
onValue
从数据库中只获取一次值。我找不到更新代码的内容。我想我会继续使用once()。再次感谢你。
databaseReference.child(code).child("round").onValue.listen((event) {
    var seconds = event.snapshot.value['seconds'];
    var startAt = event.snapshot.value['time'];
    Timer.periodic(new Duration(seconds: 1), (timer) {
      var timeLeft = (seconds * 1000) -
          ((DateTime.now().millisecondsSinceEpoch -
              startAt -
              serverTimeOffset));
      print("Seconds");
      print(seconds * 1000);
      print("Time Now");
      print(DateTime.now().millisecondsSinceEpoch);
      print("Start At");
      print(startAt);
      print("Offset");
      print(serverTimeOffset);
      print("Time Left");
      print(timeLeft);
      if (timeLeft < 0) {
        timer.cancel();
      } else {
        var show = (timeLeft / 1000).floor();
        var per = (timeLeft % 1000);
        //print(show);
        //print(per);
      }
    });
  });
flutter: Start At
flutter: 1619982194189
flutter: Time Left
flutter: 10506.6201171875
flutter: Start At
flutter: 1619982193226
flutter: Time Left
flutter: 9315.6201171875