карусель календаря flutter показывает события в соответствии с месяцем

#flutter #calendar

#flutter #Календарь

Вопрос:

Я пытаюсь создать приложение для календаря, используя карусель календаря flutter. Что мне нужно сделать, так это показать события, назначенные месяцу, когда пользователь проводит пальцем по месяцам.

 checkCurrentMonth() {
    selectedMonth = DateTime.parse(_targetDateTime.toString()).month.toInt();
    selectedYear = DateTime.parse(_targetDateTime.toString()).year.toInt();

    _markedDateMap.events.forEach((key, value) {
      // print(_markedDateMap.events);

      print(DateTime.parse(key.toString()).month.toInt());
      if (selectedMonth == DateTime.parse(key.toString()).month.toInt() amp;amp;
          selectedYear == DateTime.parse(key.toString()).year.toInt()) {
        // print(_markedDateMap.events[key]);
        _selectedHolidays.add(_markedDateMap.events[key]);
      }
    });

    // for (var item in _selectedHolidays) {
    //   print("000000000000000 $item");
    //   gatheredEvents.add(GatherEvents.fromJson(item));
    // }
    print(_selectedHolidays[0].getTitle());
    print(_markedDateMap.events.length);
  }
 

Я получаю следующую ошибку.

 Class 'List<Event>' has no instance getter 'getTitle'.
Receiver: Instance(length:1) of '_GrowableList'
Tried calling: getTitle
 

вот моя _markedDateMap

 EventList<Event> _markedDateMap = new EventList<Event>(
    events: {
      new DateTime(2020, 12, 29): [
        new Event(
          date: new DateTime(2020, 12, 29),
          title: 'Poya Day',
          icon: _poyaeventIcon(DateTime(2020, 12, 29).day.toString()),
          dot: Container(
            margin: EdgeInsets.symmetric(horizontal: 1.0),
            color: Colors.red,
            height: 5.0,
            width: 5.0,
          ),
        ),
      ],
      new DateTime(2021, 01, 14): [
        new Event(
          date: new DateTime(2021, 01, 14),
          title: 'Tamil Thai Pongal Day',
          icon: _otheralleventIcon(DateTime(2021, 01, 14).day.toString()),
          dot: Container(
            margin: EdgeInsets.symmetric(horizontal: 1.0),
            color: Colors.red,
            height: 5.0,
            width: 5.0,
          ),
        ),
      ],
    },
  );
 

пожалуйста, помогите мне с этим.

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

1. Где ваша _markerdDateMap декларация?

2. Привет @dm_tr Я отредактировал свой вопрос

3. Проверьте мой ответ

Ответ №1:

Кроме встроенных методов, вы не можете вызывать другие методы List . На самом деле вы вызываете метод getTitle из списка Event . Если вы хотите увидеть заголовок всех событий вашего списка, вы должны либо использовать цикл, либо получить определенный индекс.

 for (var event in _selectedHolidays[0]) print(event.getTitle());

// or

print(_selectedHolidays[0].first.getTitle());