【问题标题】:flutter web reload asset data after build构建后颤动Web重新加载资产数据
【发布时间】:2021-04-17 08:13:55
【问题描述】:

我想构建一个 Flutter Web 应用程序,它在运行时读取本地数据。据我所知,flutter web是不支持file io的,所以我改用Asset来读取数据。

问题来了:资产文件有时会发生变化。每次运行网络应用程序时,我都需要重新加载资产文件。我发现只有在 Chrome 中使用 隐身模式 后,资产数据才会更新。那就是说数据以某种方式缓存在 chrome 中?

不知道资产数据在flutter中是如何使用的,资产数据是如何缓存在浏览器中的。

以下是我想做的简单重现步骤:

  1. 创建一个 Flutter Web 应用程序
  2. 创建一个简单的SQLite数据库并从Flutter Asset初始化
  3. 在本地构建并运行它
  4. 以某种方式更新数据库
  5. 重新运行 Flutter 应用
  6. 如果我使用隐身模式,数据会正确更新

不知道缓存在Flutter中可以清空还是需要在Javascript中完成。

任何建议和解释都非常感谢!

【问题讨论】:

  • 您不需要使用隐身模式。您可以在 Chrome > devtools > 网络选项卡 > 禁用缓存中禁用缓存。但是,您可能需要保持 devtools 窗口打开以使设置保持不变。
  • @ambiguous58 感谢您的建议。但我不是在寻找一个已开发的解决方案,而是一个通用的发布解决方案。

标签: javascript flutter browser-cache


【解决方案1】:

使用rootBundle.loadString 来加载 yaml 文件。这些方法有一个不允许缓存的参数。 https://api.flutter.dev/flutter/services/AssetBundle/loadString.html

【讨论】:

  • loadString 实际上仅适用于文本资产文件(正如我尝试过的和文档描述一样)。此外,cache: false 仅适用于隐身模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多