Flutter初始化timezone包时出现dart:html相关报错如何解决
问题原因
你当前开发的是移动端Flutter应用,引入了仅支持Web端的timezone/browser.dart库,该库依赖Flutter移动端不支持的dart:html,因此触发编译报错。
解决步骤
- 删除错误导入语句
删掉代码中的这一行:
import 'package:timezone/browser.dart' as ts;
- 替换时区相关调用逻辑
你已经引入了适配非Web端的时区相关依赖,直接使用tz别名下的初始化方法,以及timezone库下的原生方法即可,修改第一个按钮的点击逻辑为:
onPressed: () { tz.initializeTimeZones(); var detroit = getLocation('America/Detroit'); print(detroit); var now = TZDateTime.now(detroit); print(now); },
- 可选优化
建议将时区初始化操作放到initState生命周期中执行,避免每次点击按钮重复初始化:
@override void initState() { super.initState(); tz.initializeTimeZones(); }
内容的提问来源于stack exchange,提问作者Bashar Dali
相关产品推荐
相关产品推荐

