flutter 在文本填充的ListView中恢复时间戳格式

iyr7buue  于 2022-11-30  发布在  Flutter
关注(0)|答案(1)|浏览(106)

ListView由快照值填充,值位于文本中。当前它们的生成方式如下:

Text(
      'Date: ${snapshot.data!.docs[index].get('usoOn').toDate()}',
      style: Theme.of(context).textTheme.headline4,
                        ),

以前是这样的

现在看起来像这样。由于下面显示的错误,不得不删除toDate():

正在尝试将格式更改为:

hh:mm - dd-MM-yy

数据是Firestore中的时间戳,如下所示:

错误并更新以下toDate():
尝试使用intl导入和DateFormat。timeago确实工作了,但不是我要找的。还搜索了时间戳和DateTime格式,但运气不好。甚至代码也没有抱怨它,但它不喜欢示例:

我找到的大多数答案都与使用String或单个值有关,而不是从快照中获取数据的填充ListView。
更新:必须删除toDate()。在ListView的末尾,向下滚动时添加了一个错误:


指令集
谢谢你的任何帮助,仍然绿色的Flutter。

ars1skjm

ars1skjm1#

你可以使用这个扩展,给它添加一些全局作用域(在你的类之外):

extension DateTimeExt on DateTime {
  String yourFormat() {
    final date = this;
    final hour = date.hour.toString().padLeft(2, "0");
    final minute = date.minute.toString().padLeft(2, "0");;
    final day = date.day.toString().padLeft(2, "0");;
    final month = date.month.toString().padLeft(2, "0");;
    final year = date.year.toString().substring(2);
    return "$hour:$minute - $day-$month-$year";
  }
}

并像下面这样使用它:

DateTime date = DateTime.now();
  print(date.yourFormat()); // 03:05 - 30-11-2022

在您示例中,您可以这样使用它:

Text(
      'Date: ${snapshot.data!.docs[index].get('usoOn').toDate().yourFormat()}',

相关问题