Flutter Web发布版部署后timezone包失效,报错排查求助
Flutter Web发布版部署后timezone包失效,报错排查求助
我最近在开发一个Flutter Web应用,用到了timezone包,本地用Chrome调试的时候一切正常,但部署到Azure App Service的发布版却一直报错,实在找不到解决办法,来向大家求助!
问题背景
- 本地调试:直接运行Flutter Web,timezone包的功能完全正常,能正确获取时区时间
- 发布部署:用
flutter build web打包后,把build/web目录下的所有内容复制到Azure App Service的wwwroot目录下,部署完成后访问就报错
最初遇到的错误
调用时区初始化和获取时区时间的代码如下:
import 'package:timezone/browser.dart' as tz; Future<void> _setup() async { await tz.initializeTimeZone(); } void _getTime() { setState(() { var newYork = tz.getLocation('America/New_York'); _now = tz.TZDateTime.now(newYork); }); }
部署后出现的错误是:Invalid argument(s): Invalid typed array length: 1008813135
尝试过的解决方法
我已经做了这些尝试,但还是没解决问题:
- 严格按照pub.dev上针对Flutter Web的配置说明操作,问题依然存在
- 查看了timezone包的相关讨论,看到一个 workaround 方案:
- 在
pubspec.yaml中添加asset配置:assets: - packages/timezone/data/latest_10y.tzf - 修改初始化代码,指定时区数据库文件路径:
await tz.initializeTimeZone('assets/packages/timezone/data/latest_10y.tzf');
latest_10y.tzf文件,实在搞不懂为什么会找不到 - 在
补充说明
我专门做了一个最小复现的Flutter项目,这个项目本地运行完全正常,只有部署到服务器的发布版才会触发问题。
有没有朋友遇到过类似的问题?或者能给我一些排查的方向和建议?
内容来源于stack exchange
相关产品推荐
相关产品推荐

