搜索插件、代码仓与 APP 分类

插件详情v0.4.0

service_worker

Service Worker API 的 JavaScript 绑定。

Web
近 30 天下载
4320
喜欢数
26
Pub 分数
80

安装插件

flutter pub add service_worker

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

service_worker 包为 Flutter Web 应用程序中的 Service Worker API 提供了 JavaScript 绑定。它使开发者能够利用服务工作者实现高级离线功能、后台同步和推送通知。通过与浏览器的服务工作者生命周期集成,该包允许 Flutter 应用在离线时缓存资源、拦截网络请求并管理数据持久化。对于需要强大离线功能并通过缓存策略提升性能的渐进式 Web 应用(PWA)来说,它尤其有用。

适合场景

  • 构建离线优先的Web应用程序
  • 实现推送通知
  • 缓存资源以加快加载速度
  • 管理后台同步操作
  • 提升 PWA 性能
  • 拦截和修改网络请求

主要特点

  • JavaScript 与 Service Worker API 的互操作性
  • 支持离线资源缓存
  • 背景同步集成
  • 推送通知处理
  • 事件驱动的服务工作者生命周期
  • 仅限网页兼容性

适合对象

  • 面向 Web 平台的 Flutter 开发者
  • 需要离线支持的PWA构建工具
  • 需要后台同步或推送通知的应用
  • 开发人员实现自定义缓存策略
  • 专注于网页性能优化的项目

使用建议

  • 仅限网页平台
  • 需要理解 JavaScript 服务工作者概念
  • 可能需要额外配置以应对复杂用例
  • 不兼容移动或桌面平台
  • 依赖浏览器对服务工作者的支持

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Service Worker API for Dart

Dart-y wrappers for the ServiceWorker APIs.

Warning: the API is experimental, and subject to change.

Service Workers

A service worker is an event-driven worker registered against an origin and a path. It takes the form of a JavaScript file that can control the web page/site it is associated with, intercepting and modifying navigation and resource requests, and caching resources in a very granular fashion to give you complete control over how your app behaves in certain situations (the most obvious one being when the network is not available.)

A service worker is run in a worker context: it therefore has no DOM access, and runs on a different thread to the main JavaScript that powers your app, so it is not blocking. It is designed to be fully async; as a consequence, APIs such as synchronous XHR and localStorage can't be used inside a service worker.

Quickstart

Register the Service Worker from your application script, like in example/web/main.dart:

import 'package:service_worker/window.dart' as sw;

void main() {
  if (sw.isSupported) {
    sw.register('sw.dart.js');
  } else {
    print('ServiceWorkers are not supported.');
  }
}

Write the Service Worker in a separate script, like in example/web/sw.dart:

import 'package:service_worker/service_worker.dart';

void main(List<String> args) {
  onInstall.listen((event) {
    print('ServiceWorker installed.');
  });
}

Limitation

You need to force dart2js compilation for service worker to work during debug mode. See build.yaml in the example folder.

所属分类

依赖

依赖清单 1 项

  • js>=0.6.1 <2.0.0

源码仓库

使用此插件的项目