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

使用FormBuilderDateRangePicker时报错不存在selectableDayPredicate参数

报错原因

  • 你使用的flutter_form_builder依赖包触发了大版本升级,v7.0.0及以上版本对FormBuilderDateRangePicker组件的API做了破坏性调整:原顶层参数selectableDayPredicate被移除,迁移至datePickerConfig配置项内部,旧代码直接传递顶层参数就会抛出该错误。
  • 该问题通常是执行了flutter pub upgrade命令,没有锁死依赖大版本,自动拉取了不兼容的新版包导致。

解决方法

方案1:适配新版API(推荐)

将selectableDayPredicate参数移入datePickerConfig配置即可,修改后的代码示例:

FormBuilderDateRangePicker(
    onChanged: (val) => onEditing(val),
    // 新增datePickerConfig配置,将参数移入此处
    datePickerConfig: DatePickerConfig(
      selectableDayPredicate: (DateTime val) => !val.isAfter(DateTime.now()),
    ),
    autofocus: true,
    locale: Locale(_myLocale),
    name: "choose_date_range",
    firstDate: DateTime(2017),
    lastDate: DateTime(DateTime.now().year + 1),
    format: DateFormat("yyyy-MM-dd"),
    ...
)

提示:原代码中的三元表达式val.isAfter(DateTime.now()) ? false : true可直接简化为!val.isAfter(DateTime.now()),逻辑完全一致

方案2:锁定旧版本依赖

如果不想调整现有代码,可直接在pubspec.yaml中锁定flutter_form_builder的大版本为6.x,避免自动升级到不兼容版本:

dependencies:
  flutter_form_builder: ^6.1.0

修改后执行flutter pub get重新拉取依赖即可恢复正常。


内容的提问来源于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 15:45:04