FLUTTER ECOSYSTEM

isoos/pwa

Progressive Web App library for Dart

pwa project cover
Stars
76
Forks
16
Last push (UTC)
Sep 2, 2021
Project status
Active
István Soós GitHub avatar
GITHUB User

István Soós ↗

software engineer

@agilordBudapest, HungaryOfficial website ↗
LanguagesDart

Packages published by this repository

Dependencies used

Dependency list 5 items

Original README

English project snapshot. Visit GitHub for the latest content.

Expand / collapse project README

Progressive Web App (PWA) for Dart

Progressive web apps (PWA) are a hybrid of regular web pages (or websites) and a mobile application. This new application model attempts to combine features offered by most modern browsers with the benefits of mobile experience.

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

Background

PWA is using ServiceWorkers:

Learn more about PWAs:

Articles about this packages:

Tutorial and Examples

Getting started

NOTE:

This library requires webdev installed locally. Install it using the command:

pub global activate webdev

  • Getting started: pwa_defaults

    • Shows you how to use the pwa package and what it does.
    • Enables offline asset caching for you web app out-of-the-box.
  • Additional offline urls: additional_offline_urls

    • Show you how to create the entry point for customization.
    • Gives you the ability to add additional URLs for the offline cache.

Customize caching

  • Custom routes: custom_routes
    • Familiarize yourself with caching and routes.
    • Customize cache behavior for different parts of your app.

Push notification

  • Push notification: push_notification
    • Check and/or request Push permission.
    • Trigger and handle push event, show notification.

Planned features

  • Typed Window <-> Worker communication, both Streams and request-reply patterns, something like:

    typedef Future<S> AsyncFunction<R, S>(R request);
    typedef S WireAdapter<R, S>(R input);
    
    abstract class MessageHub {
    
      AsyncFunction<R, S> getFunction<R, S>(String type,
          {WireAdapter<R, dynamic> encoder, WireAdapter<dynamic, S> decoder});
    
      void setHandler<R, S>(String type, AsyncFunction<R, S> handler,
          {WireAdapter<dynamic, R> decoder, WireAdapter<S, dynamic> encoder});
    
      Sink<T> getSink<T>(String type, {WireAdapter<T, dynamic> encoder});
    
      Stream<T> getStream<T>(String type, {WireAdapter<dynamic, T> decoder});
    }
    
  • Push Notification

    • notification for the client app
    • one-method registration and/or status request