Flutter | 让倒计时更简单

2021-07-14  本文已影响0人  无夜之星辰
最近沉迷用李白坑队友

今天分享一个有关倒计时的经验之谈。

通常后台给我们的是一个时间戳,然后我们根据这个时间戳与当前时间戳的差值,计算 天、时、分、秒,如下图所示:

但是,我想的是,能否不通过计算直接获取到需要的 天、时、分、秒,首先我想到的 DateTimeDateTime 提供了相关接口可以直接拿到 天、时、分、秒:

void _test() {
  var now = DateTime.now();
  print(now.day);
  print(now.hour);
  print(now.minute);
  print(now.second);
}

那么现在问题就变成了:如何将时间差转化为 DateTime

很遗憾我找了一阵也没找到相关的 api,所以最终只能自己算了。鉴于此功能比较常用,因此我简单封装了一下:

Duration 写了一个扩展:

extension RestTimeOnDuration on Duration {
  int get inDaysRest => inDays;
  int get inHoursRest => inHours - (inDays * 24);
  int get inMinutesRest => inMinutes - (inHours * 60);
  int get inSecondsRest => inSeconds - (inMinutes * 60);
  int get inMillisecondsRest => inMilliseconds - (inSeconds * 1000);
  int get inMicrosecondsRest => inMicroseconds - (inMilliseconds * 1000);
}

void main() {
  const duration = Duration(seconds: 123);
  print('Days: ${duration.inDaysRest}'); // 0
  print('Hours: ${duration.inHoursRest}'); // 0
  print('Minutes: ${duration.inMinutesRest}'); // 2
  print('Seconds: ${duration.inSecondsRest}'); // 3
  print('Milliseconds: ${duration.inMillisecondsRest}'); // 0
  print('Microseconds: ${duration.inMicrosecondsRest}'); // 0
}

这样用起来就极其方便了。

学废了吗?


关注我,干货不断!

上一篇 下一篇

猜你喜欢

热点阅读