flutter - Flutter中从时间戳转换为字符串的函数出现临时错误
问题描述
我正在开发一个以 Cloud Firestore 作为后端的 Flutter 项目。
有一个名为“帖子”的集合。该集合的文档包括时间戳类型中名为“post_fecha”的字段。
我想以 'dd-MM-yyyy HH:mm' 格式显示字段 'post_fecha' 的值
因此,我创建了一个函数来将接收到的时间戳从 Firestore 转换为日期字符串:
String formatearFecha(Timestamp timestamp){
var dateFromTimeStamp =
DateTime.fromMillisecondsSinceEpoch(timestamp.seconds * 1000);
return DateFormat('dd-MM-yyyy HH:mm').format(dateFromTimeStamp);
}
日期字符串正确显示:
但是,当创建新帖子时,错误会显示一秒钟或更短时间,然后应用程序继续运行良好。
错误如下:
flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
[ ] flutter: The following NoSuchMethodError was thrown building:
[ ] flutter: The getter 'seconds' was called on null.
[ +1 ms] flutter: Receiver: null
[ ] flutter: Tried calling: seconds
[ ] flutter:
[ ] flutter: When the exception was thrown, this was the stack:
[ ] flutter: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
[ ] flutter: #1 TimeAgo.formatearFecha (package:flutter_movmap/src/services/time_ago.dart:10:55)
错误消息中提到的代码行是:
var dateFromTimeStamp =
DateTime.fromMillisecondsSinceEpoch(timestamp.seconds * 1000);
我调用函数如下:
fecha_default = TimeAgo().formatearFecha(listaFiltrada[index].post_fecha);
它位于 StreamBuilder 中,它在 ListView 上显示帖子。
解决方案
使用此函数将 firebase 转换Timestamp
为 flutter Datetime
:
DateTime toDateTime(Timestamp val) => val?.toDate();
这将颤振转换Datetime
为火力Timestamp
Timestamp fromDateTime(DateTime val) => val == null ? null : Timestamp.fromDate(val);
推荐阅读
- smooth-scrolling - Jquery 平滑滚动 - 仅当单击链接时滚动条位于顶部时才能正常工作
- gganimate - 我无法让 gganimate 对象适合我的 R-Shiny 应用程序的主面板
- python - 根据python中的键将键值数据从数据帧转置到列
- python - 需要帮助来破译这个正则表达式
- java - 发生配置更改时如何不重置我的片段?
- python - 非分类项目的 Python/Beautiful Soap 数据提取问题
- android - 如何将 Firestore 与分页 3 和 RxPagingSource 一起使用
- google-chrome - 通过运行 chrome 控制台更改网页中所有元素的不透明度
- elasticsearch - 从 elasticSearch 归档日志文件并将它们带回以最大限度地降低存储成本
- android-jetpack-compose - 对话框中的 Jetpack 撰写布局更改不会更新大小