Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

An extended NotificationsAPI for Dart Web notifications

License

NotificationsYou must be signed in to change notification settings

cybex-dev/js_notifications

Repository files navigation

An extended NotificationsAPI for Dart Web notifications.

UI Examples

Examples of notifications on different platforms.

Simple Notification

Example of a simple notification:

JsNotificationsPlatform.instance.showNotification("Test Notification", tag:"test");

macOS

Windows

Linux

Coming soon

Notification with action

Example of a notification with actions:

JsNotificationsPlatform.instance.showNotification("Oh no!",    body:"Subverted expectations result in expected unexpected expectations. Anyway, check the icon...",    tag:"inquisition",    icon:"https://pbs.twimg.com/media/CtCG_f4WcAAJY-1.jpg",    actions: [JSNotificationAction(action:"dismiss", title:"Whatever"),JSNotificationAction(action:"unexpected", title:"Didn't expect that"),    ],    requireInteraction:true,);

macOS

Note: when hovering over the notification to display actions, the image is not displayed.

Windows

Linux

Coming soon

Inspiration

The Dart Web package is limited in showing notifications, one can only show a title, body, and icon. This package extends the NotificationsAPI to allow for more customization.

Setup

Imports

Add the following to yourpubspec.yaml file:

dependencies:js_notifications:^0.0.3

Copy service worker

Copy the service worker file namedjs_notifications-sw.js from theexample directory to your web directory.The name is very important, so make sure to have the file namedjs_notifications-sw.js.

Usage

import the package

import'package:js_notifications/js_notifications.dart';

Grab instance

final _jsNotificationsPlugin=JsNotificationsPlatform.instance;

Requesting permission

_jsNotificationsPlugin.requestPermission().then((permission) {print(permission);});

Creating a notification

_jsNotificationsPlugin.showNotification('Title', {    body:'Body',    icon:'icon.png',    badge:'badge.png',    image:'image.png',    tag:'tag',    data: {'key':'value'    },  });

_Note: the tag is used to identify the notification, if a notification with the same tag is shown, the previous notification is replaced.

For convenient notification access, provide a tag or one will be generated via theuuid package, specificallyuuid.v4()._

Creating a notification with actions

Here, we use theactions parameter to add actions to the notification. These are filled withJSNotificationAction objects.

JsNotificationsPlatform.instance.showNotification("Click me",    body:"An interactive notification",    tag:"interactive",    actions: [JSNotificationAction(action:"dismiss", title:"Click me"),JSNotificationAction(action:"click-me", title:"No, click me!"),    ],    requireInteraction:true,);

There are convenience methods to create actions,fromAction,fromTitle andsimpleWithIcon.

Platform limitations:

  • macOS: Limited to 2 actions (text only) withSettings automatically added as a 3rd option.
  • Windows: Limited to 3 actions, fully customizable.
  • Linux: Usually limited to 3 actions, customizability based on distro & desktop environment.

Creating a "heads up" notification

For this, we use therequireInteraction: true option

JsNotificationsPlatform.instance.showNotification("Attention",    body:"I just wanted your attention",    tag:"attention",    actions: [JSNotificationAction(action:"dismiss", title:"Go away"),    ],    requireInteraction:true,);

Handling notification click or close events

_jsNotificationsPlugin.actionStream.listen((event) {print(event);switch (event.action) {case"unexpected": {_sendBasicNotification("I know, neither did they.");break;        }//... other actions    }});_jsNotificationsPlugin.dismissStream.listen((event) {print(event);});

Get a list of all notifications

_jsNotificationsPlugin.getAllNotifications().then((notifications) {    notifications.forEach((notification) {print(notification);    });});

Get a specific notification

_jsNotificationsPlugin.getNotification('my-awesome-notification-tag-here').then((notification) {print(notification);});

Features and bugs

Any and all feedback, PRs are welcome.


[8]ページ先頭

©2009-2025 Movatter.jp