在创建DateTime对象时,DART?Ffltter似乎不允许指定时区(例如:"澳大利亚/悉尼"或"美国/底特律").可以使用当地时区,也可以指定UT.

有没有人知道解决办法?

有DART软件包时区,但它似乎不能在Flutter 应用程序中使用.

我指的包裹见https://pub.dartlang.org/packages/timezone.

编辑:时区软件包可以在Flutter 模式下工作,但需要进行一些设置.请看下面理查德·希普的回答.

推荐答案

你必须施展一点魔法,才能让package:timezone在Flutter 中发挥作用.

提取所需的任意数据文件(有3个:默认、全部和2010-2020),并将其移动到Flutter 资源文件夹.(我使用的是2018c_2010-2020.tzf,它在分支机构中可用.)

将其添加为pubspec.yaml中的assets资源 :

  assets:
    - assets/2018c_2010-2020.tzf

然后在启动时加载该文件(例如,从顶级StatefulWidget的第initState个),并使用它初始化数据库.

ByteData tzf = await rootBundle.load('assets/2018c_2010-2020.tzf');
initializeDatabase(tzf.buffer.asUint8List());
...
Location newYork = getLocation('US/Eastern');

我还没有试过,但是如果你把它标记为异步的,你甚至可以从main开始加载它.

我还注意到,我必须克隆了最新的分支,因为我在我的pubspec中看到了这一点

  timezone:
    path: ../../dart/source/timezone

... 但看起来你只需要从wine 吧抓取0.5.0-dev-2

dependencies:
  timezone: "^0.5.0-dev-2"

Dart相关问答推荐

在异步方法中,有没有更优雅的方式在DART中等待!=NULL?

什么相当于 dart 中的 JAVA ThreadLocal?

如何在 Dart 中将代码迁移到 null 安全

I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentReference#setData 的实现)

错误:不要从另一个包中导入实现文件

如何为 spawnUri 动态构建 Dart 脚本?

如何用 Flutter 在同屏路由上制作英雄风格的动画?

Flutter - 在 null 上调用了 getter 'length'

如何在 Flutter 中找出 URL 的有效性?

Flutter 扩展方法不起作用,它说undefined class和requires the extension-methods language feature

在 Dart 中将对象推入数组

如何创建一个对话框,能够接受文本输入并在Flutter中显示结果?

找不到正确的提供程序-Flutter

Flutter:我应该在哪里调用 SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark)

错误:无法将参数类型void Function(ImageInfo, bool)分配给参数类型ImageStreamListener

Flutter - 在 POST 请求中处理状态码 302

扩展一个只有一个工厂构造函数的类

学习 Dart 好还是我必须使用基本的 javascript?

在 Dart 中创建具有可变数量的参数或参数的函数

如何用 Dart 格式化日期?