Flutter Blue Ultra logo

🩵 Flutter Blue Ultra

pub package pub points

CI license

An open-source Bluetooth Low Energy (BLE) plugin for Flutter. Scan for nearby devices, connect, discover GATT services and characteristics, read and write, subscribe to notifications, negotiate MTU, and manage bonding — all from a single cross-platform API on iOS, Android, macOS, Linux, and Web (central role).

A community continuation of flutter_blue_plus 1.x — same familiar API, with new capabilities and ongoing platform maintenance.

Scanning nearby BLE devices    Connecting to a device and reading characteristics

✨ Features

  • Legacy 1.x compatibility — keep using the familiar flutter_blue_plus 1.x API surface.
  • Cross-platform — iOS, Android, macOS, Linux, and Web (central role).
  • Actively maintained — tracks Android/iOS/macOS/Linux/Web Bluetooth API changes.
  • New functionality — expanded features on top of the legacy API.
  • Accessory Setup Kit — optional accessory pairing flow integration on iOS.

⚡ Quick start

Add the package:

flutter pub add flutter_blue_ultra

Or add it manually to pubspec.yaml:

dependencies:
  flutter_blue_ultra: ^2.2.0

Configure platform permissions (Android manifest, iOS Info.plist, macOS entitlements, Android minSdkVersion) — see Getting started. Apps cannot scan or connect without these.

Minimal scan example:

import 'package:flutter_blue_ultra/flutter_blue_ultra.dart';

void main() async {
  // Ensure Bluetooth is supported and powered on before scanning.
  if (await FlutterBlueUltra.isSupported == false) return;
  await FlutterBlueUltra.adapterState
      .where((s) => s == BluetoothAdapterState.on)
      .first;

  await FlutterBlueUltra.startScan(timeout: const Duration(seconds: 5));
  await FlutterBlueUltra.isScanning.where((v) => v == false).first;
}

A full runnable app lives in example/.

📘 Documentation

🚇 Compatibility and migration

Compatibility with flutter_blue_plus

  • You cannot install both flutter_blue_plus and flutter_blue_ultra in the same project — they are mutually exclusive.
  • A compatibility layer keeps legacy code that uses FlutterBluePlus working with flutter_blue_ultra.
  • New features land only on the FlutterBlueUltra API.

Migration strategy

  1. Immediate migration (recommended) — find-and-replace:
    • flutter_blue_plusflutter_blue_ultra (imports)
    • FlutterBluePlusFlutterBlueUltra (code)
  2. Gradual migration — keep using FlutterBluePlus via the compatibility layer and migrate file by file.
  3. Legacy support — on flutter_blue_plus 1.x, use this project as a drop-in replacement. Original migration notes are in MIGRATION.md.

🙋 Where to go next

🤖 Credits and origins

A community continuation of flutter_blue_plus 1.x. Original work:

📜 License

Licensed under the BSD 3-Clause license. See LICENSE.


🛠️ Maintained by Intent

Maintained by Intent

Flutter Blue Ultra is built and maintained by Intent — we design and engineer connected products, including Bluetooth and IoT experiences. Get in touch if you need help with your BLE project.