【问题标题】:how to deal with multiple countdown timer in a listview builder如何在列表视图构建器中处理多个倒数计时器
【发布时间】:2021-12-21 20:23:48
【问题描述】:
我正在使用 listView builder 进行查看,此列表的每个数据都来自 http 响应。
我在构建器返回小部件中设置所有数据,但我不知道如何为 listview.builder 的每个子项管理计时器。
我从响应中得到的开始和结束时间。
我还发布了一张图片,以便更清楚地了解我所需要的。
【问题讨论】:
标签:
flutter
dart
listview
timer
countdown
【解决方案1】:
在列表视图生成器中,您可以添加倒数计时器:
CountdownTimer(
textStyle: TextStyle(
fontSize: 14, color: Colors.red, fontWeight: FontWeight.bold),
onEnd: onEnd,
endTime: countRemainsTime(item.startDateTime, item.endDateTime),
endWidget: Text(
"Deal has ended",
style: TextStyle(
fontSize: 14,
color: appColorDeepGreen,
fontWeight: FontWeight.bold),
),
);
并使用以下方法计算剩余时间:
var current = DateTime.now();
countRemainsTime(String startTime, String endTime) {
var end = DateTime.fromMillisecondsSinceEpoch(int.parse(endTime));
var countdowndiff = end.difference(current).inSeconds;
var finalTimer = current.millisecondsSinceEpoch +
Duration(seconds: countdowndiff).inMilliseconds;
controller = CountdownTimerController(
endTime: finalTimer, onEnd: onEnd, vsync: this);
return finalTimer;
}