Я использую функцию Dart Collection-if , представленную в Dart 2.3 . Мой класс модели -
class Calendar {
Calendar(
{this.headerDate, this.releaseDate, this.period,this.title});
final DateTime headerDate;
final DateTime releaseDate;
final String title;
final String period;
factory Calendar.fromMap(Map<String, dynamic> value) {
final int releaseDateMilliseconds = value['releaseDate'];
final int headerDateMilliseconds= value['headerDate'];
return Calendar(
releaseDate: DateTime.fromMillisecondsSinceEpoch(releaseDateMilliseconds),
headerDate: DateTime.fromMillisecondsSinceEpoch(headerDateMilliseconds),
title: value['title'],
period: value['period'],
);
}
}
Эта функция отлично работает, когда я имею дело с Strings , но не работает, когда я проверяю нулевое значение для объектов DateTime
. Даты хранятся как числа в пожарном депо и преобразуются в объекты DateTime. Вот мой метод сборки:
@override
Widget build(BuildContext context) {
return Column(children: [
if(calendar.title!=null) /// Works
Text(calendar.title),
if(calendar.period!=null) ///Works
Text(calendar.period),
if(calendar.headerDate!=null) /// Doesn't work
Text(Format.date(calendar.headerDate)),
Text(Format.date(calendar.releaseDate)),
]);
}