【问题标题】:Error: A value of type 'TimeOfDay' can't be assigned to a variable of type 'DateTime'错误:“TimeOfDay”类型的值不能分配给“DateTime”类型的变量
【发布时间】:2020-02-11 04:16:50
【问题描述】:

我正在尝试以这种格式Thrusday at 10:00pm until 从时间选择器中获取时间。我确实在 google 上找到了一个解决方案,使用 dart 中的 intl 库来格式化日期以以 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

任何帮助都会很棒。

【问题讨论】:

标签: flutter dart datetimepicker


【解决方案1】:

你需要使用:

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。

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

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

并将alwaysUse24HourFormat 设置为false

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

【讨论】:

  • 它说timeOfDay 未定义。
  • 是的,因为该值不存在。你应该在那里使用selectedTime。我的错。
  • 还有一件事我应该如何在屏幕上显示时间我之前通过更新_currentTime 的状态像这样setState(() { _currentTime = formattedTime; }); 这样做是这样的@
  • 但现在它说这个Error: A value of type 'String' can't be assigned to a variable of type 'TimeOfDay'.
  • 如果您有新问题,您应该在 StackOverflow 上发布一个新问题。阅读您的问题,我建议您先学习 Dart 和 Flutter 基础知识。您应该创建一个新的Text 小部件并将formattedTime 设置为该Text 小部件。
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 2021-03-28
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多