You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FormBuilderDateRangePicker中禁用未来日期

FormBuilderDateRangePicker禁用未来日期实现方案

FormBuilderDateTimePicker可通过selectableDayPredicate配置可选日期,但FormBuilderDateRangePicker未提供该参数,你可以通过以下两种方式实现需求:

  • 方式一:通过lastDate参数直接限制可选最大日期
    这是最简便的实现方式,设置后所有晚于lastDate的日期会自动置灰不可选,代码示例:
FormBuilderDateRangePicker(
  name: 'date_range',
  // 可自行调整允许选择的最早日期
  firstDate: DateTime(2020),
  // 设为当前日期即可禁用所有未来日期
  lastDate: DateTime.now(),
  decoration: const InputDecoration(labelText: '选择日期范围'),
)

如果需要允许选择当天的全部时段,可以将lastDate调整为当日的最后一刻:
lastDate: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, 23, 59, 59),

  • 方式二:结合validator做校验兜底
    如果有更复杂的可选日期规则(比如除了未来日期还要禁用部分历史日期),可以在校验规则里增加判断,选中不符合规则的日期时会触发错误提示:
FormBuilderDateRangePicker(
  name: 'date_range',
  firstDate: DateTime(2020),
  lastDate: DateTime(2030),
  decoration: const InputDecoration(labelText: '选择日期范围'),
  validator: (value) {
    if (value == null) return '请选择日期范围';
    // 判断开始/结束日期是否为未来日期
    if (value.start.isAfter(DateTime.now()) || value.end.isAfter(DateTime.now())) {
      return '不可选择未来日期';
    }
    // 可在此处添加更多自定义校验规则
    return null;
  },
)

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:36:01