NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1426 most downloaded on pub.dev
A cross-platform (Android/iOS/macOS/Windows/Linux/Web) Bluetooth Low Energy (BLE) plugin for Flutter
Last release 1 months ago
07 Sep 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 45 of 46 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
46 releases · first in 2024
Windows: support connectionless manufacturer-data advertising without a GATT service, including state/error reporting and cleanup on stop/disposal.
closeGattOnDetach connection option to release GATT clients when the app is killeddisconnect(), and report the real disconnect statusgetReadinessState() to check permissions and adapter power before advertising support, and throttle startAdvertising Bluetooth enable prompts to at most one dialog.isSubscribed and getSubscribedCharacteristics to check characteristic notification/indication subscription status in Central mode.Expose microsecond scan timestamps captured before Flutter event dispatch
BleCommandQueue support to UniversalBlePeripheral (queueType, timeout, clearQueue, and onQueueUpdate)updateCharacteristicValuediscoverServices callsOne column per month.
Android: Fix BluetoothDevice null-safety compile error under Kotlin 2.x
BleCharacteristic equality and hashCode to compare properties by valueRe-generate pigeon files
Re-generate pigeon files
queueId parameter to all APIsAppleConnectionOptions to connect (via ConnectionPlatformConfig) — map to CBConnectPeripheralOptionNotifyOnConnectionKey, NotifyOnDisconnectionKey and NotifyOnNotificationKey, so a suspended app is relaunched into the background to handle connection events (e.g. auto-reconnect while the phone is locked)legacy to AndroidOptions — set legacy: true to scan legacy BLE 4.x advertisements (e.g. ESP32) on API 26+; default (null/false) keeps extended-advertisement scanning unchanged from prior releasesaddServicesInScanResponse to PeripheralAndroidOptions - set addServicesInScanResponse: true to Put advertised service UUIDs in the scan response instead of the primary advertisementiOS: make Bluetooth state restoration optional by enabling it only when the bluetooth-central background mode is declared
bluetooth-central background mode is declaredCBCentralManager at launch only if Bluetooth permission is grantediOS/macOS: defer CBPeripheralManager creation until peripheral APIs are used, fixing Bluetooth permission prompt on app launch
CBPeripheralManager creation until peripheral APIs are used, fixing Bluetooth permission prompt on app launchbluetooth-central background mode in Info.plist (see README → Permissions → iOS / macOS).iOS/macOS: retain peripheral from retrievePeripherals to fix API MISUSE on connect
Android peripheral: eager Kotlin initialization, thread-safe GATT connection cache, and pairing only via pair() or when encryption requires it
pair() or when encryption requires itonConnectionParametersChange to notify when Android link-layer connection parameters change (API 26+)callbackType, matchMode, and numOfMatches on AndroidOptions so callers can configure ScanSettings to defeat aggressive chip-side advert de-duplication on Pixel devices. callbackType accepts a List<AndroidScanCallbackType> (OR-folded on the native side) and includes a new allMatchesAutoBatch value (API 34+).Add peripheral mode on Android, iOS, macOS, and Windows
requestConnectionPriority to allow tuning BLE connection intervals on AndroidAdd autoConnect parameter to connect() method for automatic reconnection support on Android and iOS/macOS
autoConnect parameter to connect() method for automatic reconnection support on Android and iOS/macOSserviceData in BleDeviceAndroidScanMode and reportDelayMillis to AndroidOptions for scanningPermissionHandler is now activity-aware and succeeds silently if permissions are already granted when no activity is available* Add readRssi method
Nothing published for this version
BREAKING CHANGE: OnValueChange callback also includes timestamp
OnValueChange callback also includes timestampisScanning apihasPermissions apirequestPermissions api and auto ask permission on startScandisconnect now waits for disconnection confirmation before returningwithDescriptors parameter in discoverServices APItimestamp in BleDevicesetLogLevel api for configuring logsFix device name resolution on Windows
exclusionFilters to filter out devices from scan resultsBREAKING CHANGE: connectionTimeout argument from connect, isPaired and pair API renamed to timeout
connectionTimeout argument from connect, isPaired and pair API renamed to timeouttimeout argument to all APIsclearQueue() APIFix BleCharacteristic.onValueReceived
BleCharacteristic.onValueReceivedFix writeWithoutResponse() which was not properly waiting for completion on Android and Apple
writeWithoutResponse() which was not properly waiting for completion on Android and AppleBREAKING CHANGE: bleDevice.isPaired is now bleDevice.paired
bleDevice.isPaired is now bleDevice.pairedreadValue in favor of readwriteValue in favor of writesetNotifiable in favor of subscribeNotifications, subscribeIndications, unsubscribegetBluetoothAvailabilityState reporting wrong Bluetooth status on browsers where Web Bluetooth can globally be disabledstartScan on web now throws a WebBluetoothGloballyDisabled exception if scanning cannot proceed due to Web Bluetooth being globally disabledGet and prefer advertised name of scanned devices on Apple
Add Streams: scanStream, availabilityStream, connectionStream, characteristicValueStream, pairingStateStream
scanStream, availabilityStream, connectionStream, characteristicValueStream, pairingStateStreamconnect api bug to detect proper connection stategetSystemDevices() on LinuxFix Windows crash when calling pair APIs with an unknown deviceId
Unable to establish connection on channel when hot restartingBREAKING CHANGE: payload is now payloadPrefix
payload is now payloadPrefixmask is now payloadMaskgetSystemDevices(withServices:) now sets several generic services by default as filter
getSystemDevices(withServices:) now sets several generic services by default as filtergetConnectionState on Android will now return BleConnectionState.disconnected if device is connected to the system but not to the appBREAKING CHANGE: bleDevice.name now filters out non-printable characters
bleDevice.name now filters out non-printable charactersbleDevice.rawNamedisableBluetooth APIstartScanscan too frequently and auto retry scan once sufficient time has passedonValueChanged events on Android 11 or earlierwithServices filterstartScanCharacteristic already notifying error. Subscribing to characteristic notifications multiple times is now handled safelyBREAKING CHANGE: scanFilter filters are now in OR relation
scanFilter filters are now in OR relationmanufacturerDataHead is removed from BleDeviceWebConfig is now WebOptionsManufacturerDataFilter.data is now ManufacturerDataFilter.payloadconnect() does not return a boolean anymore. It will throw error on connection failurepair() does not return a boolean anymore. It will throw error on connection failureonConnectionChange returns error as wellmanufacturerData is deprecated in BleDevice and will be removed in the futurescanFilter handlingManufacturerData object instead of Uint8List for manufacturerDatamanufacturerDataList as List<ManufacturerData> in BleDevicegetSystemDevices()connectionStream API to get connection updates as streamBREAKING CHANGE: unPair is now unpair
unPair is now unpaironPairingStateChange does not return error anymorepair(), isPaired and onPairingStateChange support for Apple and webconnect() and pair() now return a bool resultPlatformConfig property in StartScanWebConfig property in PlatformConfigReceive advertisement events on web
Unify UUID format across all platforms, 128-bit lowercase
BREAKING CHANGE: ScanResult is now BleDevice
ScanResult is now BleDevicegetConnectedDevices is now getSystemDevicesisPaired is now nullableonValueChanged is now onValueChangeonConnectionChanged is now onConnectionChangeconnectionState property to BleDeviceisSystemDevice property to BleDevice.perDevice queueAdd device name prefix filtering
Remove scan result caching on Windows
convertcollectionImprove service discovery on Apple
Improve manufacturer data discovery on Windows
Fix characteristic keying on linux allowing receiving data from multiple BLE devices at the same time
Fix a Windows issue where characteristics of certain services would not be discovered
Windows support has graduated from beta to stable
Fix Windows crash when no Bluetooth adapter is present
Add scan filter (withServices:) in startScan()
startScan()BleScanResultImprove error handling on Android, iOS, macOS, Windows, Linux and web
* Improve logging
Improve windows device name discovery
Add WebRequestOptionsBuilder.defaultServices for convenience when setting optionalServices when scanning on web
WebRequestOptionsBuilder.defaultServices for convenience when setting optionalServices when scanning on webRename onPairStateChange *> onPairingStateChange
* Improve readme
* Update supported platforms
* Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →