dart ?扑似乎不允许时区(例如:“澳大利亚/悉尼”或“美国/底特律”)。将使用本地时区,或者可以指定UT。
有人知道变通办法吗?
有一个Dart包TimeZone,但它在Flutter应用程序中似乎无法使用。
请参阅https://pub.dartlang.org/packages/timezone了解我所指的软件包。
编辑:时区包在Flutter中工作,有一些设置。下面是Richard Heap的回答。
dart ?扑似乎不允许时区(例如:“澳大利亚/悉尼”或“美国/底特律”)。将使用本地时区,或者可以指定UT。
有人知道变通办法吗?
有一个Dart包TimeZone,但它在Flutter应用程序中似乎无法使用。
请参阅https://pub.dartlang.org/packages/timezone了解我所指的软件包。
编辑:时区包在Flutter中工作,有一些设置。下面是Richard Heap的回答。
4条答案
按热度按时间j2qf4p5b1#
你必须做一些魔术让
package:timezone
在flutter中工作。提取您需要的任何数据文件(有3个:默认值,所有和2010-2020),并将其移动到flutter assets文件夹。(我使用
2018c_2010-2020.tzf
,它在分支中可用。将其添加为
pubspec.yaml
中的资产:然后在启动时加载该文件(例如从顶级StatefulWidget的
initState
),并使用它来初始化数据库。我没有尝试过,但是如果你把它标记为async,你甚至可以从
main
加载它。我还注意到,我必须克隆最新的分支,因为我看到这在我的pubspec
但是看起来你只需要从pub中获取0.5.0-dev-2
5cnsuln72#
这个解决办法对我很有效
简单地在initState中添加这些行
vjrehmav3#
时区包确实起作用。从GitHub上的问题列表:
我花了6个月的时间,但我有一个很好的解决方案。我认为这将是推荐的解决方案。
请参阅Flutter关于添加资产的文档。您应该能够在Flutter应用程序的pubspec.yaml中添加:
并在您的应用程序中加载:
zf9nrax14#
**免责声明:**我是《糖》的作者之一。
Dart的
DateTime
不支持时区。timezone
包确实可以工作,但它需要手动添加assets部分下的tzf文件&如上所述,用initializeTimeZones()
初始化包。timezone
封装的替代方案是sugar
。它不需要在项目的pubspec.yaml的assets部分下添加额外的文件,也不需要初始化包。要使用该包,只需创建一个
ZonedDateTime
(相当于TzDateTime
):安装
sugar
软件包:有关更多信息,请参阅项目的page。