时间选择器未在 Flutter 应用程序中返回值
Time picker not returning value in flutter app
我正在使用 flutter_datetime_picker: ^1.5.1 以便能够为预定事件选择日期和时间。
这是我使用的屏幕:
“开始时间”字段是我遇到问题的地方。当我在该字段中单击时,会显示时间选择器。一旦我 select 一次并单击“确定”,文本字段就不会得到 selected 时间。
这是我在 onTap 中的代码:属性:
onTap: () async {
TimeOfDay _timePicked = await (showTimePicker(
context: context,
initialTime: new TimeOfDay.now()) as FutureOr<TimeOfDay>);
if (_timePicked != null) {
_dt = DateTime(_selectedDate!.year, _selectedDate!.month, _selectedDate!.day, _timePicked.hour, _timePicked.minute);
setState(() {
eventStartTimeController.text = DateFormat('h:mm a').format(_dt); //_timePicked.format(context);
eventProvider.changeeventstarttime(_dt);
});
}
},
调试时,我select编辑了一次后,执行不会在设置的任何断点处停止。这是怎么回事?
我已经升级到 Dart 2,null-safety 所以我不知道这是否与代码有关。
看来错误就在这里
...作为 FutureOr);
试试这个,效果很好
final TimeOfDay _timePicked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (_timePicked != null) {
_dt = DateTime(
_selectedDate.year,
_selectedDate.month,
_selectedDate.day,
_timePicked.hour,
_timePicked.minute,
);
setState(() {
eventStartTimeController.text = DateFormat('h:mm a')
.format(_dt); //_timePicked.format(context);
eventProvider.changeeventstarttime(_dt);
});
}
您可以将代码更改为此。它会起作用。
TimeOfDay _timePicked = await (showTimePicker(
context: context,
initialTime: new TimeOfDay.now()) as FutureOr<TimeOfDay>);
if (_timePicked != null) {
_dt = DateTime(_selectedDate!.year, _selectedDate!.month, _selectedDate!.day, _timePicked.hour, _timePicked.minute);
setState(() {
final localizations = MaterialLocalizations.of(context);
final formattedTimeOfDay = localizations.formatTimeOfDay(_timePicked!,alwaysUse24HourFormat: false);
eventStartTimeController.text = formattedTimeOfDay;
eventProvider.changeeventstarttime(_dt);
});
我正在使用 flutter_datetime_picker: ^1.5.1 以便能够为预定事件选择日期和时间。
这是我使用的屏幕:
“开始时间”字段是我遇到问题的地方。当我在该字段中单击时,会显示时间选择器。一旦我 select 一次并单击“确定”,文本字段就不会得到 selected 时间。
这是我在 onTap 中的代码:属性:
onTap: () async {
TimeOfDay _timePicked = await (showTimePicker(
context: context,
initialTime: new TimeOfDay.now()) as FutureOr<TimeOfDay>);
if (_timePicked != null) {
_dt = DateTime(_selectedDate!.year, _selectedDate!.month, _selectedDate!.day, _timePicked.hour, _timePicked.minute);
setState(() {
eventStartTimeController.text = DateFormat('h:mm a').format(_dt); //_timePicked.format(context);
eventProvider.changeeventstarttime(_dt);
});
}
},
调试时,我select编辑了一次后,执行不会在设置的任何断点处停止。这是怎么回事?
我已经升级到 Dart 2,null-safety 所以我不知道这是否与代码有关。
看来错误就在这里
...作为 FutureOr);
试试这个,效果很好
final TimeOfDay _timePicked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (_timePicked != null) {
_dt = DateTime(
_selectedDate.year,
_selectedDate.month,
_selectedDate.day,
_timePicked.hour,
_timePicked.minute,
);
setState(() {
eventStartTimeController.text = DateFormat('h:mm a')
.format(_dt); //_timePicked.format(context);
eventProvider.changeeventstarttime(_dt);
});
}
您可以将代码更改为此。它会起作用。
TimeOfDay _timePicked = await (showTimePicker(
context: context,
initialTime: new TimeOfDay.now()) as FutureOr<TimeOfDay>);
if (_timePicked != null) {
_dt = DateTime(_selectedDate!.year, _selectedDate!.month, _selectedDate!.day, _timePicked.hour, _timePicked.minute);
setState(() {
final localizations = MaterialLocalizations.of(context);
final formattedTimeOfDay = localizations.formatTimeOfDay(_timePicked!,alwaysUse24HourFormat: false);
eventStartTimeController.text = formattedTimeOfDay;
eventProvider.changeeventstarttime(_dt);
});