【问题标题】:Flutter - CupertinoDatePicker showing one day ahead of the today?Flutter - CupertinoDatePicker 在今天前一天显示?
【发布时间】:2020-04-03 13:58:08
【问题描述】:

目前,在我的颤振应用程序中实现一个默认小部件 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”命令。仍然面临同样的问题。

谁能提出一个可行的解决方案?

谢谢。

【问题讨论】:

    标签: android datetime flutter flutter-cupertino cupertinopicker


    【解决方案1】:

    快速修复,

      @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)),
    

    输出

    【讨论】:

    • 或在一行中:minimumDate: DateTime.now().subtract(Duration(days: 1)) 我认为问题在于 DateTime.now() 也使用时间 - 所以小部件无法处理最短时间但最短日期。这就是为什么 Ravinder 的解决方案和我的解决方案一样 :)
    • 是的,我也发现了。 DateTime.now()返回的时间才是真正的罪魁祸首。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多