title: Flutter Syncfusion Calendar doesn't show data
body: <p>I have a problem with SyncFusion's flutter calendar which is demonstrated by this screenshot
  <a href="https://i.stack.imgur.com/c3aKL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/c3aKL.png" alt="enter image description here" /></a></p>
  <p>As you see the calendar still get the data from my API but it doesn't show any meeting data on the calendar. FYI, I would like get the data with each time i click on each day, that why I'm using onViewChanged</p>
  <p>Here is my full code:</p>
  <pre><code>import 'package:flutter/material.dart';
  import 'package:flutter/scheduler.dart';
  import 'package:myhumgupdate/App/Config/palette.dart';
  import 'package:myhumgupdate/Icon/dbicons.dart';
  import 'package:myhumgupdate/Widgets/dialog_loading.dart';
  import 'package:myhumgupdate/giangvien/Screens/XemTKB/TKBTheoNgay/tkbngay_viewmodel.dart';
  import 'package:myhumgupdate/giangvien/models/meeting.dart';
  import 'package:myhumgupdate/giangvien/models/meetingdata_source.dart';
  import 'package:stacked/stacked.dart';
  import 'package:syncfusion_flutter_calendar/calendar.dart';
  
  class TKBNgay extends StatefulWidget {
    @override
    _TKBNgayState createState() =&gt; _TKBNgayState();
  }
  
  class _TKBNgayState extends State&lt;TKBNgay&gt; {
    DateTime date;
  
    List&lt;DateTime&gt; _blackoutDates = &lt;DateTime&gt;[];
    CalendarController _calendarController;
    CalendarController _onViewChanged;
    DateTime _chosenDate = DateTime.now();
  
    CalendarDataSource _calendarDataSource;
    dynamic scheduleViewBuilder;
    bool _showDatePickerButton = true;
    bool _allowViewNavigation = true;
    bool _showLeadingAndTrailingDates = true;
    DateTime _minDate;
    DateTime _maxDate;
    final List&lt;CalendarView&gt; _allowedViews = &lt;CalendarView&gt;[
      CalendarView.day,
      CalendarView.week,
      CalendarView.workWeek,
      CalendarView.month,
      CalendarView.schedule
    ];
    ViewChangedCallback viewChangedCallback;
  
    @override
    Widget build(BuildContext context) {
      return ViewModelBuilder&lt;TKBNgayViewModel&gt;.reactive(
          builder: (context, model, child) =&gt; SfCalendar(
                onViewChanged: (details) {
                  List&lt;DateTime&gt; dates = details.visibleDates;
                  model.getTkbNgay(dates[0]);
                },
                // onTap: (details) {
                //   DateTime date = details.date;
                //   model.getTkbNgay(date);
                // },
                controller: _calendarController,
                dataSource: MeetingDataSource(model.getDataSource),
                scheduleViewMonthHeaderBuilder: scheduleViewBuilder,
                // appointmentBuilder: appointmentBuilder,
                appointmentTimeTextFormat: 'hh:mm:ss a',
                initialDisplayDate: DateTime(DateTime.now().year,
                    DateTime.now().month, DateTime.now().day, 00, 45, 0),
                allowedViews: _allowedViews,
                showDatePickerButton: _showDatePickerButton,
                allowViewNavigation: _allowViewNavigation,
                blackoutDates: _blackoutDates,
                minDate: _minDate,
                maxDate: _maxDate,
                monthViewSettings: MonthViewSettings(
                    appointmentDisplayMode:
                        MonthAppointmentDisplayMode.appointment,
                    showTrailingAndLeadingDates: _showLeadingAndTrailingDates,
                    appointmentDisplayCount: 4),
                // timeSlotViewSettings: const TimeSlotViewSettings(
                //     minimumAppointmentDuration: Duration(minutes: 60)),
                timeSlotViewSettings: TimeSlotViewSettings(
                  startHour: 0,
                  endHour: 16,
                  timeFormat: &quot; H&quot;,
                  timeIntervalHeight: 60,
                  timeTextStyle: TextStyle(
                    color: Colors.black,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                selectionDecoration: BoxDecoration(
                  color: Colors.transparent,
                  border: Border.all(color: Colors.yellow, width: 2),
                  shape: BoxShape.rectangle,
                ),
              ),
          viewModelBuilder: () =&gt; TKBNgayViewModel());
    }
  }
  
  void calendarTapped(CalendarTapDetails details) {
    if (details.targetElement == CalendarElement.viewHeader) {}
  }
  
  Widget appointmentBuilder(BuildContext context,
      CalendarAppointmentDetails calendarAppointmentDetails) {
    final Meeting appointment = calendarAppointmentDetails.appointments.first;
    return Column(
      children: [
        Container(
          width: calendarAppointmentDetails.bounds.width,
          height: calendarAppointmentDetails.bounds.height,
          // color: appointment.background,
          decoration: BoxDecoration(
            border: Border.all(
              color: Colors.black,
              width: 0.25,
            ),
            color: appointment.background,
          ),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                '${appointment.tkb.maMonHoc} - ${appointment.tkb.tenMonHoc}',
                style: TextStyle(
                  color: Palette.kSecondColor,
                  fontWeight: FontWeight.w600,
                  fontSize: 16.0,
                ),
              ),
              SizedBox(
                height: 5.0,
              ),
              Text(
                'Phòng: ${appointment.tkb.maPhongHoc} - Nhóm MH: ${appointment.tkb.nhom}',
                style: TextStyle(
                  color: Palette.kSecondColor,
                  fontWeight: FontWeight.w600,
                  fontSize: 16.0,
                ),
              ),
              SizedBox(
                height: 5.0,
              ),
              Text(
                'Giảng viên: ${appointment.tkb.giaoVien}',
                style: TextStyle(
                  color: Palette.kSecondColor,
                  fontWeight: FontWeight.w600,
                  fontSize: 16.0,
                ),
              ),
            ],
          ),
        )
      ],
    );
  }
  </code></pre>
  <p>Here is my viewmodel code :</p>
  <pre><code>import 'dart:ui';
  
  import 'package:intl/intl.dart';
  import 'package:myhumgupdate/giangvien/models/meeting.dart';
  import 'package:myhumgupdate/giangvien/models/thoikhoabieu_ngay.dart';
  import 'package:myhumgupdate/giangvien/services/schedule.service.dart';
  import 'package:stacked/stacked.dart';
  import 'package:table_calendar/table_calendar.dart';
  
  class TKBNgayViewModel extends BaseViewModel {
    List&lt;ThoiKhoaBieuNgay&gt; _tkbNgayModels;
    List&lt;ThoiKhoaBieuNgay&gt; get tkbNgayModels =&gt; _tkbNgayModels ?? [];
    List&lt;Meeting&gt; _getDataSource = [];
  
    ScheduleService _scheduleService = new ScheduleService();
    List&lt;Meeting&gt; get getDataSource =&gt; _getDataSource;
  
    CalendarController calendarController = CalendarController();
    DateFormat formatDateTitle = DateFormat(&quot;EEEE, dd/MM/yyyy&quot;, 'vi');
    String _currentTime = DateFormat(&quot;EEEE, dd/MM/yyyy&quot;, 'vi').format(DateTime.now());
    DateTime _timeSelect = DateTime.now();
    DateTime get timeSelect =&gt; _timeSelect;
  
    String get currentTime =&gt; _currentTime;
    DateTime timeNow = DateTime.now();
    DateFormat date = new DateFormat('dd/MM/y');
    int day = DateTime.now().day;
  
    getTkbNgay(DateTime dateTime) async {
      _currentTime = formatDateTitle.format(dateTime);
      _timeSelect = dateTime;
  
  
      String today = date.format(dateTime);
      var day = today.split(&quot;/&quot;);
      if (day[0].length &lt; 2) return day[0] = '0${day[0]}';
  
      String dateParse = '${day[0]}/${day[1]}/${day[2]}';
  
      List&lt;ThoiKhoaBieuNgay&gt; getTKBNgay =
          await _scheduleService.getThoiKhoaBieuNgay(dateParse, true);
  
      _getDataSource.clear();
      if (getTKBNgay != null) {
        DateTime _startTime = timeNow;
        DateTime _endTime = timeNow;
        getTKBNgay.forEach((element) {
          _startTime = DateTime(timeNow.year, timeNow.month, timeNow.day,
              element.tietBatDau.toInt(), 0, 0);
          _endTime = _startTime.add(Duration(hours: element.soTiet.toInt()));
          _getDataSource.add(Meeting(
            eventName: element.tenMonHoc,
            from: _startTime,
            to: _endTime,
            subText: element.maPhongHoc,
            tkb: element,
            background: Color(0xFFFEFEA5),
          ));
        });
      } else {
        getTKBNgay = [];
      }
  
      _tkbNgayModels = getTKBNgay.toList();
      notifyListeners();
    }
  
    Comparator&lt;ThoiKhoaBieuNgay&gt; priceComparator =
        (a, b) =&gt; a.tietBatDau.compareTo(b.tietBatDau);
  }
  </code></pre>