Он выводит календарь непрерывным вертикальным списком вместо одного месяца переключением. Это полезно в таких случаях:
⭕️ Нужно показать сразу несколько месяцев;
⭕️ Есть выбор интервала дат, которые могут быть в разных месяцах;
⭕️ Нужен другой UX, чем стандартный.
Давайте разберем его базовое использование:
PagedVerticalCalendar(
minDate: DateTime.now().subtract(Duration(days 365)),
maxDate: DateTime.now().add(Duration(days 365)),
initialDate: DateTime.now().add(Duration(days 3)),
invisibleMonthsThreshold: 1,
startWeekWithSunday: true,
onMonthLoaded: (year, month) {
// on month widget load
},
onDayPressed: (value) {
// on day widget pressed
},
onPaginationCompleted: (direction) {
// on pagination completion
},
);
Пройдемся по его параметрам:
•
minDate и maxDate помогают нам сделать календарь не бесконечным;•
initialDate - дата начального месяца, который будет показан пользователю посередине списка;•
invisibleMonthThreshold - количество месяцев, которые пользователь не видит, но они просчитываются для дальнейшего отображения;•
startWeekWithSunday - полезное свойство, если приложение работает в странах, где неделя начинается с воскресенья, а не с понедельника;•
onMonthLoaded, onPaginationCompleted - обратные вызовы, которые помогают подгружать данные, если это нужно;•
onDayPressed - обработка нажатия на какой-либо день.Так как это все-таки список, то ему доступны еще параметры, которые есть у других похожих виджетов -
controller, physics, addAutomaticKeepAlives и reverse.Но самое интересное и важное, что такой календарь можно максимально кастомизировать под себя следующими параметрами:
•
dayAspectRatio - помогает задать соотношение сторон для виджета дня;•
weekdaysToHide - скрывает дни недели, если нужно показать только определенные. Например, только рабочие дни;•
listPadding - позволяет задать отступы у списка;•
monthBuilder - позволяет кастомизировать шапку месяца под себя;•
dayBuilder - позволяет кастомизировать отображение дня на календаре.Рассказывайте, решали ли уже подобные задачи и пользовались ли этим пакетом в своих проектах?
