所以我想在 Flutter 中制作一個秒表。
static void startTrip() {
SharedPrefsHelper().setIsCurrentlyOnTrip(true);
_elapsedTime = DateTime(
0, //year
0, //month
0, //day
0, //hour
0, //minute
0, //second
0, //millisecond
0, //microsecond
);
_timer = Timer.periodic(Duration(seconds: 1), (Timer timer) {
_elapsedTime.add(Duration(seconds: 1));
print('new time: $_elapsedTime');
_controller.sink.add(_elapsedTime); //same object/reference, but this is for the StreamBuilder to update
});
//TODO
}
如您所見,我首先嘗試使用 DateTime 物件來跟蹤時間。
但DateTime(0, 0, 0, 0, 0, 0, 0, 0)初始化為-0001-11-30 00:00:00.000. 并且在我嘗試添加 1 秒后該值不會更新,它總是列印出相同的結果。
通過運行以下代碼在dartpad上親自嘗試一下:
DateTime elapsedTime = DateTime(0, 0, 0, 0, 0, 0, 0, 0);
print(elapsedTime);
elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);
有誰知道為什么會這樣?
現在我將只使用一個 int 來跟蹤時間并自己進行格式化。
PS所以我就是這樣做的,如果有人想要代碼:
int hours = elapsedTime ~/ 3600;
int minutes = (elapsedTime % 3600) ~/ 60; //get rid of all additional hours, then divide by 60
int seconds = elapsedTime % 60; //get rid of all additional minutes
String h = hours > 9 ? hours.toString() : '0$hours';
String m = minutes > 9 ? minutes.toString() : '0$minutes';
String s = seconds > 9 ? seconds.toString() : '0$seconds';
uj5u.com熱心網友回復:
你可以試試這個:
DateTime elapsedTime = DateTime.utc(0);
print(elapsedTime);
elapsedTime = elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);
注意:日和月的最小值是 1 而不是 0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/432134.html
上一篇:PostgreSQL VACUUM 之深入淺出 (一)
下一篇:僅轉換為帶有資料的日期單元格
