【问题标题】:How to select a week(custom) in the Flutter Date Range Picker (SfDateRangePicker)如何在 Flutter 日期范围选择器(SfDateRangePicker)中选择一个星期(自定义)
【发布时间】: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 返回从星期一到星期日的日期范围。我希望每周选择器选择从周一到周日的整个星期,而不是从周日到周六,如此屏幕截图所示。

enter image description here

我尝试下面的代码。我尝试将一个添加到开始日期和结束日期,以便星期日变为星期一,星期六变为星期日,但是当我这样做时代码不起作用。

  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


    【解决方案1】:

    您可以使用 MonthViewSettings 中的 FirstDayofWeek 属性在日期范围选择器中自定义一周的第一天。参考UG文档了解更多关于FirstDayofWeek的信息,

    https://help.syncfusion.com/flutter/daterangepicker/getting-started#change-first-day-of-week

    参考代码 sn-ps 来实现你的要求,

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 2023-04-05
      • 2017-09-19
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多