flutter 限制日期选择器抖动中所选日期的范围

igsr9ssn  于 2023-02-13  发布在  Flutter
关注(0)|答案(1)|浏览(212)

我正在构建预订应用程序,目前我面临着这个问题,其中使用可以选择一个范围的天使用ShowDateRangePickershowDateRangePicker,但是使用可以选择任何范围内的开始和结束日期,但我被要求不要让用户选择超过14天。例如:
开始日期= 12/2/2023结束日期= 1/1/2024
以及用户选择的范围:12/2/2023 - 28/2/2023在这种情况下,它应该抛出一个错误,因为范围超过了14天的限制。the difference in range exceeded 14.或更好的一个,当用户达到一个开始日期+ 14,它将停止允许他们选择更多天。

xdyibdwo

xdyibdwo1#

你可以使用syncfusion_flutter_datepicker库,它有一个selectionChanged回调函数,你可以通过它来限制可选择的日期,下面的代码片段展示了如何将范围限制在从选定的_start天开始的14天内。

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  final DateTime _minDate = DateTime.now();
  DateTime _maxDate = DateTime.now().add(const Duration(days: 365));

  final Duration _duration = const Duration(days: 14);

  DateTime _start = DateTime.now();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
          child: SfDateRangePicker(
        minDate: _minDate,
        maxDate: _maxDate,
        selectionMode: DateRangePickerSelectionMode.range,
        onSelectionChanged: (DateRangePickerSelectionChangedArgs args) {
          if (args.value is PickerDateRange) {
            _start = (args.value as PickerDateRange).startDate!;
            setState(() {
              // limit the maxDate to 14 days from selected date
              _maxDate = _start.add(_duration);
            });
          }
        },
      )),
    );
  }
}

有关更多自定义信息,请参阅docs

相关问题