首页 > 解决方案 > 如何在颤动中为 CupertinoDatePicker 小部件设置最短时间?

问题描述

我可以为小部件设置最小日期,但是,我不希望用户能够选择过去的时间。我如何确保这一点?库比蒂诺日期选择器

旁注:如何使“00”和“30”在分钟轮中只出现一次?下面是一些相关的代码片段。

final minDate = DateTime.now();
final difference = 30 - minDate.minute % 30;
final initialDate = minDate.add(Duration(minutes: difference));

Stack(
  children: <Widget>[
   CupertinoDatePicker(
     minimumDate: minDate,
     maximumDate: minDate.add(Duration(days: 7)),
     initialDateTime: initialDate,
     minuteInterval: 30,
     onDateTimeChanged: (dateTime) {
        // Do stuff                  
     },
   ),
   Align(
     alignment: Alignment.topRight,
     child: CupertinoButton(
       child: Text("Done"),
       onPressed: () {
          Navigator.of(context).pop();
       }),
     ),
  ],
),

标签: iosflutterdart

解决方案


虽然您不能限制用户默认选择的时间,但只能限制日期。您可以在onDateTimeChanged块中添加验证代码并防止这种情况发生。这不是一个很好的解决方法,但它可以确保您不会以最小的努力获得过去的时间。


推荐阅读