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

升级date_range_form_field后DateRangeField的onSaved未触发问题咨询

问题原因及版本差异说明

date_range_form_field从^0.0.5升级到^1.0.2属于跨大版本更新,存在多处不兼容变更,你遇到的onSaved不触发是版本变更导致的常见问题,核心差异点如下:

  • 移除了旧版本要求必传的context参数,你代码中注释掉该行的操作是正确的
  • onSaved回调触发逻辑调整:0.0.5版本中,父级Form组件调用save()方法时,会自动触发DateRangeField的onSaved回调;1.0.x版本中该组件未适配Form的全局save逻辑,只有用户在日期选择弹窗中点击「保存」按钮时才会触发onSaved,且部分1.0小版本存在触发失效的bug
  • 回调参数类型变更:0.0.5版本onSaved返回的是List<DateTime>类型(包含开始、结束两个日期的数组),1.0.0之后返回的是DateTimeRange类型对象,如果你后续Bloc事件接收的参数还是List类型,即使回调触发也会出现类型报错

解决方案

你可以根据业务需求选择以下任意一种方案修复:

  1. 改用onChanged回调替代onSaved:只要用户选中日期就会实时触发回调,将值同步给Bloc,不需要等表单提交时统一保存,修改成本最低。如果Bloc事件需要接收List类型的日期参数,可以用[datesGarantie.start, datesGarantie.end]转换后再传递
  2. 手动触发save:给DateRangeField绑定GlobalKey<FormFieldState<DateTimeRange>>类型的全局key,在表单提交逻辑中先调用key.currentState?.save()手动触发onSaved回调
  3. 回退依赖版本:如果不需要1.0版本的新特性,可以将date_range_form_field回退到^0.0.6版本,该版本兼容intl 0.17.0,不需要做其他代码调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:24:04