opennotify_flutter

Real-time notification client for OpenNotify — a free, self-hostable, open source notification server for Flutter apps.

This package connects your Flutter app to an OpenNotify server via WebSockets, so notifications arrive instantly — no polling, no third-party push services required.

Looking for the server? → opennotify-server


Installation

Add this to your pubspec.yaml:

dependencies:
  opennotify_flutter:
    git:
      url: https://github.com/Abdul20009/opennotify_flutter.git

Then run:

flutter pub get

Usage

import 'package:opennotify_flutter/opennotify_flutter.dart';

final client = OpenNotifyClient(
  serverUrl: 'http://your-server-url.com',
  userId: 'user_123',
);

client.onNotification((notification) {
  print('${notification.title}: ${notification.body}');
});

client.connect();

Don't forget to disconnect when you're done (e.g. in dispose()):

client.disconnect();

The OpenNotification model

Every notification received has the following shape:

class OpenNotification {
  final String id;
  final String appId;
  final String userId;
  final String title;
  final String body;
  final Map<String, dynamic>? data;
  final bool read;
  final DateTime createdAt;
}

Use notification.data to pass custom payloads — e.g. a screen to navigate to, an entity ID, etc.


Android setup

If your OpenNotify server runs on plain HTTP (not HTTPS), add the following to android/app/src/main/AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:usesCleartextTraffic="true"
        ...>

Setting up a server

This package requires an OpenNotify server to connect to. You can self-host one for free in a few minutes — see the server setup guide.


License

MIT

Libraries

opennotify_flutter