【发布时间】:2022-12-08 22:17:32
【问题描述】:
我尝试按照这个例子实现每周选择器 - https://www.syncfusion.com/kb/11412/how-to-select-a-week-in-the-flutter-date-range-picker-sfdaterangepicker
我遇到的问题是 DateRangePickerSelectionChangedArgs 中的“args.value”返回从周日到周六的日期范围。我想要的是 DateRangePickerSelectionChangedArgs 返回从星期一到星期日的日期范围。我希望每周选择器选择从周一到周日的整个星期,而不是从周日到周六,如此屏幕截图所示。
我尝试下面的代码。我尝试将一个添加到开始日期和结束日期,以便星期日变为星期一,星期六变为星期日,但是当我这样做时代码不起作用。
void selectionChanged(DateRangePickerSelectionChangedArgs args) {
isSameDate(date1, date2) {
if (date2 == date1) {
return true;
}
if (date1 == null || date2 == null) {
return false;
}
return date1.month == date2.month && date1.year == date2.year && date1.day == date2.day;
}
int firstDayOfWeek = DateTime.sunday % 7;
int endDayOfWeek = (firstDayOfWeek - 1) % 7;
endDayOfWeek = endDayOfWeek < 0 ? 7 + endDayOfWeek : endDayOfWeek;
PickerDateRange ranges = args.value;
DateTime date1 = ranges.startDate!;
DateTime date2 = (ranges.endDate ?? ranges.startDate)!;
if (date1.isAfter(date2)) {
var date = date1;
date1 = date2;
date2 = date;
}
int day1 = date1.weekday % 7;
int day2 = date2.weekday % 7;
DateTime dat1 = date1.add(Duration(days: (firstDayOfWeek - day1) + 1));
DateTime dat2 = date2.add(Duration(days: (endDayOfWeek - day2) + 1));
if (!isSameDate(dat1, date1) || !isSameDate(dat2, date2)) {
datePickerController.selectedRange = PickerDateRange(dat1, dat2);
}
}
【问题讨论】:
标签: flutter dart datepicker syncfusion syncfusion-calendar