From f7addaf7f6ea70eee82863ec9b91d3c9e29690ae Mon Sep 17 00:00:00 2001 From: engineer Date: Sun, 12 Apr 2026 18:32:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(picker):=20=E4=BF=AE=E5=A4=8D=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E9=80=89=E6=8B=A9=E5=99=A8=E6=97=B6=E9=97=B4=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E9=99=90=E5=88=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了对结束日期当天的时间范围限制检查 - 实现了开始日期和结束日期的同天判断逻辑 - 修正了小时范围的生成规则以支持动态限制 - 移除了初始化时的分钟和秒范围限制,改为滑动后动态调整 - 优化了时间数据的过滤和显示逻辑 --- .../src/components/picker/t_date_picker.dart | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tdesign-component/lib/src/components/picker/t_date_picker.dart b/tdesign-component/lib/src/components/picker/t_date_picker.dart index 996778ecf..0187318b9 100644 --- a/tdesign-component/lib/src/components/picker/t_date_picker.dart +++ b/tdesign-component/lib/src/components/picker/t_date_picker.dart @@ -704,18 +704,26 @@ class DatePickerModel { : second; return; } - if (initialTime.hour >= dateStart[3]) { + + // 检查初始时间是否在结束日期的同一天 + var isSameAsEndDate = initialTime.year == dateEnd[0] && + initialTime.month == dateEnd[1] && + initialTime.day == dateEnd[2]; + + // 检查初始时间是否在开始日期的同一天 + var isSameAsStartDate = initialTime.year == dateStart[0] && + initialTime.month == dateStart[1] && + initialTime.day == dateStart[2]; + + if (isSameAsEndDate) { + // 如果初始时间是结束日期,限制小时范围为 0 ~ dateEnd[3] + hour = List.generate(dateEnd[3] + 1, (index) => index); + } else if (isSameAsStartDate && initialTime.hour >= dateStart[3]) { + // 如果初始时间是开始日期且小时>=开始小时,限制小时范围为 dateStart[3] ~ 23 hour = List.generate(24 - dateStart[3], (index) => index + dateStart[3]); } - if (initialTime.minute >= dateStart[4]) { - minute = - List.generate(60 - dateStart[4], (index) => index + dateStart[4]); - } - if (initialTime.second >= dateStart[5]) { - second = - List.generate(60 - dateStart[5], (index) => index + dateStart[5]); - } + // 初始化时不限制分钟和秒的范围,只在滑动后通过 refreshMinuteData 和 refreshSecondData 动态限制 } data[4] = useHour && filterItems != null ? filterItems!(DateTypeKey.hour, hour)