这是您想要离线流行,流行,赢的一个例子!游戏。
支持离线模式需要大致如下:
- 确定将哪些资源放入缓存以供离线使用。
- 创建一个服务工作者来准备这些资源的缓存。
- 注册服务工作者,以便可以从离线缓存中处理后续请求(以防网络中断)。
- 在该服务工作者中,使用 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),因为代码生成器不会再次更改或覆盖它。
所有这些步骤都来自这篇文章,你可以在那里找到更好的细节。