错误:无法将类型'TimeOfDay'的值分配给类型'DateTime'的变量

时间:2019-10-14 14:04:10

标签: flutter dart datetimepicker

我正在尝试从时间选择器那里获取时间,格式为Thrusday at 10:00pm until。我的确在Google上找到了一种解决方案,可以使用intl库中的dart格式日期以10:00pm格式显示。但是这里的问题是,每当我尝试输入DataTime.now()来获得time picker时,都会出现此错误。

  

错误:不能将类型为'TimeOfDay'的值分配给类型为'DateTime'的变量。

这是我的代码

DateTime _currentTime = new DateTime.now();

  Future<Null> selectTime(BuildContext context) async {
    DateTime seletedTime = await showTimePicker(context: context, initialTime: _currentTime);
  }

有什么办法可以使12 hour clock time中的时间变得像这样10:00pm

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

您需要使用:

TimeOfDay _currentTime = TimeOfDay.now();

因为,看着https://api.flutter.dev/flutter/material/showTimePicker.html,正在使用TimeOfDay类型而不是DateTime

您需要将调用更改为以下内容,以使一切正常:

TimeOfDay selectedTime = await showTimePicker(context: context, initialTime: _currentTime);
  

有什么办法可以在12点钟的时间获取时间,例如晚上10:00。

对于第二个问题,您可以使用formatTimeOfDay类中的MaterialLocalizations。请参阅以下内容:

https://api.flutter.dev/flutter/material/MaterialLocalizations/formatTimeOfDay.html

然后将alwaysUse24HourFormat设置为false

MaterialLocalizations localizations = MaterialLocalizations.of(context);
String formattedTime = localizations.formatTimeOfDay(selectedTime, alwaysUse24HourFormat: false);