1

目前,在我的颤振应用程序中实现默认小部件 CupertinoDatePicker。在这个日期选择器中,我想要用户不应该选择前一天的功能。用户应该只能选择未来和今天的日期。

所以,我正确地传递了“minimumDate:DateTime.now()”属性,但是当 CupertinoDatePicker 打开时,它向我显示了今天之前的一个日期。我检查了“DateTime.now()”属性的值。它正确显示当前时间,但从 CupertinoDatePicker 小部件中出现问题。

CupertinoDatePicker(
                    minimumDate: DateTime.now(),
                    minuteInterval: 1,
                    mode: CupertinoDatePickerMode.dateAndTime,
                    onDateTimeChanged: (DateTime dateTime) {
                      print("dateTime: ${dateTime}");
                    },
)

此外,应用了“flutter clean”命令。仍然面临同样的问题。

任何人都可以提出一个可行的解决方案吗?

谢谢。

4

1 回答 1

5

快速解决,

  @override
  Widget build(BuildContext context) {
    var now = DateTime.now();
    var today= new DateTime(now.year, now.month, now.day);

然后today传入minimumDate

CupertinoDatePicker(
                    minimumDate: today,
                    minuteInterval: 1,
                    mode: CupertinoDatePickerMode.dateAndTime,
                    onDateTimeChanged: (DateTime dateTime) {
                      print("dateTime: ${dateTime}");
                    },
                  ),

编辑

或者您可以按照@Leonard Arnold 在评论中的建议使用以下代码

  minimumDate: DateTime.now().subtract(Duration(days: 1)),

输出

在此处输入图像描述

于 2019-12-10T11:48:58.937 回答