如何使用 SelectableDayPredicate 将我的 DatePicker 限制为仅工作日?
How do I use the SelectableDayPredicate to limit my DatePicker to only weekdays?
我已经为我的 Flutter 应用程序实现了 DatePicker。我试图限制选择器只允许用户选择工作日。但是,我不确定该怎么做。我相信它与 SelectableDayPredicate 有关。下面是我的代码片段:
Future<Null> _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: _date,
firstDate: new DateTime(DateTime.now().year),
lastDate: new DateTime(DateTime.now().year+1),
// to do: I am pretty sure the SelectableDayPredicate should go somewhere here.
);
if (picked != null && picked != _date) {
setState(() {
_date = picked;
});
}
}
当用户点击 listTile 时调用 _selectDate 函数。
下面是我在选择器中省略了星期五和星期六的例子,你可以按照这里的逻辑来实现你想要的:
selectableDayPredicate: (DateTime val) =>
val.weekday == 5 || val.weekday == 6 ? false : true,
谢谢!
但是,对于日期选择器,您必须提供一个 initialValue,它可能应该是
'today',但如果 'today' 是周末,那么你会得到例外!
所以在这种情况下我将初始设置为每月的第 1 天
initialDate: _dateTime.weekday == 5 || _dateTime.weekday == 6 ? DateTime(DateTime.now().year, DateTime.now().month, 1) : _dateTime ,
selectableDayPredicate: (DateTime val) =>
val.weekday == 5 || val.weekday == 6 ? false : true,
我已经为我的 Flutter 应用程序实现了 DatePicker。我试图限制选择器只允许用户选择工作日。但是,我不确定该怎么做。我相信它与 SelectableDayPredicate 有关。下面是我的代码片段:
Future<Null> _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: _date,
firstDate: new DateTime(DateTime.now().year),
lastDate: new DateTime(DateTime.now().year+1),
// to do: I am pretty sure the SelectableDayPredicate should go somewhere here.
);
if (picked != null && picked != _date) {
setState(() {
_date = picked;
});
}
}
当用户点击 listTile 时调用 _selectDate 函数。
下面是我在选择器中省略了星期五和星期六的例子,你可以按照这里的逻辑来实现你想要的:
selectableDayPredicate: (DateTime val) =>
val.weekday == 5 || val.weekday == 6 ? false : true,
谢谢!
但是,对于日期选择器,您必须提供一个 initialValue,它可能应该是 'today',但如果 'today' 是周末,那么你会得到例外!
所以在这种情况下我将初始设置为每月的第 1 天
initialDate: _dateTime.weekday == 5 || _dateTime.weekday == 6 ? DateTime(DateTime.now().year, DateTime.now().month, 1) : _dateTime ,
selectableDayPredicate: (DateTime val) =>
val.weekday == 5 || val.weekday == 6 ? false : true,