Показывать элементы списка на основе изменения даты

#flutter #listview #sqflite #flutter-listview #flutter-futurebuilder

#флаттер #listview #sqflite #flutter-listview #flutter-futurebuilder

Вопрос:

Я хочу иметь список, когда дата каждого элемента списка равна сегодняшней дате. Я лично написал этот код в listview.builder в future builder:

           itemBuilder: (context, index) {
            var now = DateTime.now();
            var nowFormated = DateFormat.MMMd().format(now);
            DateTime time = DateTime.parse(snapshot.data[index].date);
            var databaseFormated = DateFormat.MMMd().add_Hm().format(time);
            var checkerFormated = DateFormat.MMMd().format(time);
            if (checkerFormated == nowFormated) {
              print (checkerFormated);
              print(nowFormated);
              return Todays(
                  snapshot.data[index].name != null
                      ? snapshot.data[index].name
                      : '',
                  databaseFormated);
            } else {
              return null;
            }
          }
 

этот код работает только для первого элемента. он не показывает никаких дополнительных элементов.

Ответ №1:

Попробуйте это

 itemBuilder: (context, index) {
  final now = DateTime.now();
  final time = DateTime.parse(snapshot.data[index].date);
  final databaseFormated = DateFormat.MMMd().add_Hm().format(time);
  return (now.year == time.year amp;amp; now.month == time.month amp;amp; now.day == time.day) ? Todays(snapshot.data[index].name != null ? snapshot.data[index].name : '', databaseFormated) : SizedBox();
}
 

Комментарии:

1. опять же, это сработало только для первого элемента.

2. Я проверил еще раз; пока я не вставляю элемент с другой датой, это работает, но когда у меня есть элемент, у которого есть, например, завтрашняя дата, после этого ничего не отображается.

3. Но вы четко упомянули в своем вопросе I want to have a list when the date of each list item is equal to todays date

4. да, но он не отображается ни с вашим, ни с моим кодами. он останавливает список всякий раз, когда я добавляю элемент с другой датой, отличной от сегодняшней.

5. Опубликуйте полный код вашего ListView или полной страницы

Ответ №2:

Я решил это. проблема заключалась в том, что возвращаемый тип else был null. Я дал ему пустой размер, и он работает.

 else {
                      return SizedBox.shrink();
                    }