android - 如何在flutter mobile中保存网站以供离线使用
问题描述
重要提示 - 我希望此功能仅适用于移动应用程序,而不适用于 Flutter Web。
我在颤振应用程序中保存网站时遇到了一些问题。我已经尝试对 inappwebview 使用缓存方法和 savewebarchive 方法。该方法的问题在于它没有保存网站的全部内容。它只保存 HTML 和 CSS 文件。
我想用 HTML、CSS、js、字体文件、图像等所有内容保存整个网站,并将其存储在 Flutter 应用程序中。我已经浏览了一些插件,但它们都没有帮助。
我正在寻找与 httrack 相同的功能。
任何正确的方向都会被应用。
解决方案
这是您想要离线流行,流行,赢的一个例子!游戏。
支持离线模式需要大致如下:
- 确定将哪些资源放入缓存以供离线使用。
- 创建一个服务工作者来准备这些资源的缓存。
- 注册服务工作者,以便可以从离线缓存中处理后续请求(以防网络中断)。
- 在该服务工作者中,使用 URL 预填充离线缓存,并处理来自缓存或网络的适当获取请求。
- 确保服务工作者检测到应用程序或静态资产的更改,并将新版本放入缓存中。
要执行上述步骤,您将需要此包Progressive Web App (PWA) for Dart
应用程序中的更改将pwa
包导入您的pubspec.yaml
:
dependencies:
pwa: ^0.1.2
运行后pub get
,将客户端添加到您的web/main.dart
:
import ‘package:pwa/client.dart’ as pwa;
main() {
// register PWA ServiceWorker for offline caching.
new pwa.Client();
}
自动生成的渐进式 Web 应用程序 pwa 包提供了处理上述列表中的项目 1-2 和 4-5 的代码生成。为确保正确使用缓存(填充缓存和使缓存无效),请使用以下工作流程:
- 使用所有的静态资源构建您的 Web 应用程序
build/web
:
pub build
- Run
pwa
的代码生成器扫描(或重新扫描)您的离线资产:
pub run pwa
- 再次构建您的项目,因为您需要
pwa.dart
编译您的(新)文件:
pub build
这些步骤会生成一个名为的文件lib/pwa/offline_urls.g.dart
,其中包含要缓存的脱机 URL 列表。.g.dart
扩展名表示该文件已生成,可能会被 的代码生成器工具自动覆盖pwa
。
在第一次运行时,此工作流会生成web/pwa.dar
包含具有合理默认值的 Service Worker 的 t 文件。您可以修改此文件(例如自定义离线 URL 或使用高级 API),因为代码生成器不会再次更改或覆盖它。
所有这些步骤都来自这篇文章,你可以在那里找到更好的细节。
推荐阅读
- typescript - Typescript 无法识别导入的枚举并抛出 TypeError
- html - css 使项目与网格水平对齐
- excel - 在 Office 365 中,如何使用 VBA 让 Excel 数组函数在工作表中正确溢出和呈现
- amazon-web-services - AWS Amplify API 未触发 Lambda
- angular - 如何从 Angular ngModule 文件中获取组件文件路径列表?
- css - 样式化子组件以显示在父组件的左侧
- c# - 如何将 dotnet-ef 工具与 DI 实例化 DbContext 一起使用?
- uitableview - tableView(canEditRowAt) 不再使用 tableViewDiffableDataSource
- reactjs - 音频播放/暂停切换在反应中不起作用
- unit-testing - 使用 MockServerHttpResponse 测试 WebFilter