flutter - Flutter - 如何将日期列表传递给 showDatePicker 中的 selectableDayPredicate?
问题描述
我正在使用以下代码使某些日期(本示例中为 6 月 24 日和 6 月 25 日)能够从 DatePicker 中进行选择。
final DateTime picked = await showDatePicker(
context: context,
initialDate: DateTime(2020, 6, 24),
firstDate: DateTime(2020, 6, 24),
lastDate: DateTime(2101),
selectableDayPredicate: (DateTime val) =>
val == DateTime(2020, 6, 24) || val == DateTime(2020, 6, 25) ? true : false,
);
请注意,它们val == DateTime(2020, 6, 24) || val == DateTime(2020, 6, 25)
是硬编码的。我有一个日期列表,如何将其传递给selectableDayPredicate
?我按照Anoop的建议尝试了以下方法,但它不起作用。
List<DateTime> _dates = List();
_dates.add(DateTime(2020, 6, 24));
_dates.add(DateTime(2020, 6, 25));
final DateTime picked = await showDatePicker(
context: context,
initialDate: DateTime(2020, 6, 24),
firstDate: DateTime(2020, 6, 24),
lastDate: DateTime(2101),
selectableDayPredicate: (DateTime val) =>
_dates.contains(_dates),
);
我得到了错误:
'selectableDayPredicate == null || selectableDayPredicate(initialDate)': Provided initialDate 2020-06-24 00:00:00.000 must satisfy provided selectableDayPredicate.
解决方案
如果列表是 DateTime 格式,只需使用 List contains 方法
List<DateTime> dates = List(); //list of dates
final DateTime picked = await showDatePicker(
context: context,
initialDate: DateTime(2020, 6, 24),
firstDate: DateTime(2020, 6, 24),
lastDate: DateTime(2101),
selectableDayPredicate: (DateTime val) =>
dates.contains(val),
);
或列表项为字符串格式,通过 DateTime.parse(datestring) 将列表转换为 DateTime
推荐阅读
- javascript - 在表上创建新行时函数不起作用
- java - 为什么这个多线程程序的执行时间如此奇怪?
- debugging - 文件无法在 Fortran 中打开
- list - 点列表的质心
- shopify - Shopify 应用访问令牌 - 如何使其更安全?
- javascript - 单击javascript时颜色没有正确改变
- java - SonarQube - 可能通过存储外部可变对象来公开内部表示
- swift - 如何在 UIAlertController 中添加 UIPickerView?
- rust - 有没有办法转换一个`Vec
>` 到 `Vec `,结合所有的`Vec `s 成一个 `Vec `? - powershell - 用于捕获将组成员添加到本地组的异常的 Powershell 脚本