Skip to main content
From v0.30.0 the SDK has a Flutter plugin, offline_protocol, that hosts the engine on iOS and Android from Dart. It is a preview. It compiles the same native bridge sources as the React Native module, so a transport fix reaches both, but it exposes a smaller API. For a phone app you ship today, use React Native. The plugin is not on pub.dev. Depend on it by path from a checkout of the SDK repository at the release tag.

Requirements

Add the plugin

Check out the SDK at the release tag and build the mobile libraries, the same steps as the React Native module:
Then depend on the plugin by path in your app’s pubspec.yaml:
Use the same permissions and manifest entries as React Native: Bluetooth usage descriptions and the bluetooth-central and bluetooth-peripheral background modes on iOS, and the Bluetooth, location and nearby Wi-Fi runtime permissions on Android. See React Native installation. On iOS, pod install copies the shared Swift bridge sources into the plugin. If you change those sources, run bindings/flutter/offline_protocol/ios/sync_bridge_rn.sh and pod install again, or the build compiles the old copy.

Quick start

Subscribe to events before createFromConfig if you need every event, including gap recovery through native replay:
Configuration fields and transport behaviour match React Native; see configuration. The engine runs on a dedicated thread, and method-channel results and events are delivered on the main isolate’s platform thread.

What the plugin covers

Not in the plugin yet: Nostr, Reticulum, telemetry and the React Native foreground mesh service. createFromConfig refuses a configuration with reticulumEnabled or nostrEnabled set. Groups, shared documents, services and file transfer are not in the Dart API in this release; use React Native for those. CI runs the plugin’s Dart tests and builds its Android library. No CI job compiles the iOS plugin yet.

Reference

The SDK is AGPL-3.0-only with a commercial license available; see licensing.