flutter_blue_plus_harmony 1.31.8
flutter_blue_plus_harmony: ^1.31.8 copied to clipboard
Flutter plugin for connecting and communicationg with Bluetooth Low Energy devices, on Android, iOS, and MacOS.
1.31.8 #
- [Fix] stream asserts when calling
startScantwice quickly
1.31.7 #
- [Fix]
cancelWhenScanCompletemust handle error cases
1.31.6 #
- [Feature] add
cancelWhenScanCompleteconvenience function
1.31.5 #
- [Improve] Updated README & Example app
1.31.4 #
- [Fix] iOS: mtu and auto connect are incompatible
1.31.3 #
- [Fix]
adapterState.first&connectionState.firstdont work (regression 1.30.7)
1.31.2 #
- [Fix] Gradle 7 (Flutter 2) would not build (regression 1.7.6)
1.31.1 #
- [Fix] iOS: scan filters were doing nothing (regression 1.31.0)
1.31.0 #
This release adds support for multiple scan filters at the same time.
- [Feature] iOS: support multiple scan filters at the same time
1.30.9 #
- [Improve] assert: fbp only supprts a single
scanfilter at a time
1.30.8 #
- [Improve] android: discoverServices: add
subscribeToServicesChangedoption
1.30.7 #
- [Fix]
autoConnectnot always working (bug in 1.30.0) - [Fix] perf:
NewStreamWithInitialValuewas not closing its streams (regression 1.17.2) - [Feature] add
device.isAutoConnectEnabled
1.30.6 #
- [Improve] ios log more detail
- [Feature] add
adapterStateNowgetter
1.30.5 #
- [Fix] iOS build error (regression 1.30.4)
- [Fix] android
autoConnectwas broken (regression 1.30.1)
1.30.4 #
- [Fix] Perf: must close
adapterState,bondState&scanResultsBufferStreams - [Improve] iOS: set
kCBConnectOptionEnableAutoReconnectoption - [Improve] requestMtu: add
predelayargument - [Example] only call
setStateif mounted
1.30.3 #
- [Fix] android: connect crashes (regression in 1.30.0)
1.30.2 #
- [Improve] auto connect: assert that mtu is null in
connect
1.30.1 #
- [Feature] auto connect: remove
setAutoConnectfunction added in 1.30.0 and go back to usingconnect:autoConnectparameter
1.30.0 #
This release greatly improves autoconnect support on Android, and adds iOS support.
- [Improve] android: auto connect is no longer canceled when bluetooth is turned off
- [Fix] android:
deadObjectExceptionswhen bluetooth is turned off
1.29.13 #
- [Improve] android: add delay before
requestMtuis called to work arounddiscoverServicestimeout
1.29.12 #
- [Fix] android:
CALLBACK_TYPE_FIRST_MATCHcauses scanning issues (regression in 1.27.0) - [Fix] android:
withKeywordswasn't filtering out adverts that have no scan record (bug in original feature)
1.29.11 #
- [Fix] android:
remoteIdwas wrong (regression in 1.29.10)
1.29.10 #
- [Fix] android:
isNotifyingwas not updated (regression in 1.28.5) - [Improve] accidentally logging 'canceling connection in progress' every time
1.29.9 #
- No changes. This version was accidentally skipped.
1.29.8 #
- [Fix] android: crash due to wrong type cast (regression in 1.29.7)
1.29.7 #
- [Fix] scan errors should be pushed to
scanResultsstream (bug in originalflutter_blue) - [Fix] android: scan: when
continuousUpdatesisfalse, don't filter non-duplicate adverts (bug in original feature) - [Improve] make sure
continuousDivisoronly applies whencontinuousUpdatesis true
1.29.6 #
- [Improve] default
continuousDivisorshould be 1 - [Improve]
continuousDivisorshould be applied after scan filters
1.29.5 #
- [Fix] iOS: 'service not found' if service supports short uuid (regression 1.28.5)
- [Improve] android: handle
turnOnuser rejected
1.29.4 #
- [Fix] characteristics with same UUID could return wrong
propertiesordescriptors(regression in 1.20.4)
1.29.1 to 1.29.3 #
- [Improve] more refinements to
onScanResults
1.29.0 #
- [Breaking Change]
scanResults: do not clear results afterstopScan. If you want results cleared useonScanResultsinstead. - [Add]
lastScanResultsto synchronously get the most recent results
1.28.14 #
- [Fix]
setAdvertisingDataTypecrash on android 10 and below (regression in 1.28.10)
1.28.13 #
- [Fix]
isNotifyingwas not set to false on disconnection (regression in 1.28.9)
1.28.12 #
- [Fix] crash if
rssiwas zero on android (regression in 1.27.2)
1.28.11 #
- [Rename]
giud.uuid->guid.str&guid.uuid128->guid.str128 - [Add] connect:
timeoutargument is now optional. infinite timeout is possible on iOS
1.28.10 #
- [Perf] android: filter out devices without names if
scan.withKeywordsis set - [Fix] calling scan multiple times would breifly push
isScanning=false - [Improve]
servicesList: return empty instead of null
1.28.9 #
- [Improve] to make FBP easier to use, never clear
knownServices
1.28.8 #
- [Fix] android: GUID issues related to scanning (regression in 1.28.3)
1.28.7 #
- [Fix] android: GUID starting with 0000 were misinterpretted (regression in 1.28.5)
1.28.6 #
- [Improve] simplify api: clear
knownServiceson reconnection instead of disconnection - [Improve] dont clear
bondStatecache when device is disconnected. unecessary.
1.28.5 #
- [Internal] use short UUID where possible
1.28.4 #
- [Fix] guid: uuid was returning 0000 for 16 bit uuid (regression in 1.28.3)
- [Guid]
guid.uuidshould return lowercase
1.28.3 #
- [Improve] guid: add
uuidshort representation
1.28.2 #
- [Improve] add length checks to
MsdFilter&ServiceDataFilter - [Improve] guid: more consistent handling of 16, 32, vs 128 bit guids
1.28.1 #
- [Feature] scanning: add
withServiceDatafilter - [Feature] scanning: add
withMsdfilter
1.28.0 #
- [Breaking Change]
guid.toString()now returns 16-bit short uuid when possible - [Breaking Change] return
GUIDs foradvertisingData.serviceUuids&advertisingData.serviceDatainstead of String - [Guid] add support for 16-bit and 32-bit uuids
- [Fix] android: advertised UUIDs were 128-bit instead of the actual length (regression in 1.14.17)
1.27.6 #
- [Improve] add more checks for bluetooth being off
1.27.5 #
- [Fix] android: typo compile error (regression in 1.27.3)
1.27.4 #
- [Fix] accidentally changed
advertisementData.localNameto nullable (regression in 1.27.3)
1.27.3 #
- [Perf] scanning: add
continuousDivisoroption to reduce platform channel & main-thread usage
1.27.2 #
- [Perf] scanning: only send advertisment keys over platform channel when they exist
- [Rename]
advertisementData.localName->advertisementData.advName
1.27.1 #
- [Add] android: add
forceIndicationsoption tosetNotifyValue
1.27.0 #
This release improves the default scanning behavior.
- [Breaking Change] scanning: make
continousUpdatesfalse by default - it is not typically needed & hurts perf. If your app usesstartScan.removeIfGone, or your app continually checks the value ofscanResult.timestamporscanResult.rssi, then you will need to explicitly setcontinousUpdatesto true.
1.26.6 #
- [Fix] android: scanning would not work if
continuousUpdateswas false (regression in 1.26.5)
1.26.5 #
- [Add] scanning:
withRemoteIds,withNames,withKeywordsfilters - [Add] scanning: expose
androidScanModeagain - [Add] scanning:
continuousUpdatesoption replaces formerallowDuplicatesoption
1.26.4 #
- [Add]
cancelWhenDisconnected: option to cancel on next disconnection
1.26.3 #
- [Add]
events.onReadRssi - [Add]
events.onCharacteristicWritten - [Add]
events.onDescriptorWritten
1.26.2 #
- [Fix] android: close gatt after canceling an in-progress connnection (regression in 1.26.1)
- [Improve] android: wait until bonding completes for better reliability
1.26.1 #
- [Feature] add support for canceling an in progress connection using
device.disconnect - [Fix] connection timeouts did not actually cancel the connection attempt (regression in 1.5.0)
- [Fix] android: update
isScanningwhenonDetachedFromEngineis called (bug in originalflutter_blue)
1.22.1 to 1.26.0 #
These releases changed multiple things but then changed them back. For brevity, here are the actual changes:
- [Behavior Change] android: listen to Services Changed characteristic to match iOS behavior
- [Fix] android: stop scanning when detached from engine (bug in original
flutter_blue) - [Add]
device.advNamereturns the name found during scanning - [Add]
device.mtuNowsynchronously gets the current mtu value - [Add]
events.onDiscoveredServicesstream - [Add] events api: add accessors for errors
- [Rename] events api: most functions & classes were renamed for consistency
- [Rename]
device.onServicesChanged->device.onServicesReset - [Remove]
device.onNameChanged, in favor of only exposingevents.onNameChanged
1.22.0 #
This release makes mtu behavior more similar on android & iOS.
- [Breaking Change] android: request mtu of 512 by default.
1.21.0 #
This release greatly increases reliability on android & ios.
- [Improve] only allow a single ble operation at a time.
1.20.8 #
- [Fix] iOS: connect: return error for invalid
remoteId(bug in originalflutter_blue) - [Improve] iOS: log warning if CCCD is not found, like we do on android
1.20.7 #
- [Fix] events API was not accessible through
FlutterBluePlus.events
1.20.6 #
- [Add]
FlutterBluePlus.events.mtu
1.20.5 #
- [Add]
FlutterBluePlus.events.onNameChanged - [Add]
FlutterBluePlus.events.onServicesChanged
1.20.4 #
- [Rename]
FlutterBluePlus.connectionEvents->FlutterBluePlus.events.connectionState - [Add]
FlutterBluePlus.events.onCharacteristicReceived - [Add]
FlutterBluePlus.events.onDescriptorRead - [Add]
FlutterBluePlus.events.bondState
1.20.3 #
- [Add]
FlutterBluePlus.connectionEvents, a stream of all connection & disconnected events - [Add]
FlutterBluePlus.connectedDevices, to get currently connected devices - [Add]
device.isConnected, convenience accessor
1.20.2 #
- [Fix] cannot retrieve platform name from
bondedDevices(regression) - [Fix]
stopScan: should clear results after platform method has been called (bug in originalflutter_blue)
1.20.1 #
- [Remove]
FlutterBluePlus.connectedDevices. This API needs more thought.
1.20.0 #
This release renames connectedSystemDevices.
- [Rename]
connectedSystemDevices->systemDevices, because they must be re-connected by your app
1.19.2 #
- [Add] new method
device.cancelWhenDisconnected(subscription)
1.19.1 #
- [Add] new method
FlutterBluePlus.connectedDevices
1.19.0 #
This release reverts most of the breaking changes made in 1.18.0.
- [Revert] most breaking changes made to
bondStatestream in 1.18.0 - [Unchanged] bond lost/failed are replaced by
prevBondState - [Add] method
device.prevBondState - [Fix] android:
adapterNamemust request permission (bug in originalflutter_blue)
1.18.3 #
- [Refactor]
bondState: finish refactor started in 1.18.0
1.18.2 #
- [Fix]
bondState: must explicitly check for nullprevState(regression in 1.18.0)
1.18.1 #
- [Fix]
bondState: handle nullprevState(regression in 1.18.0)
1.18.0 #
This release improves bondState stream
- [Breaking Change]
bondState: directly exposeprevBondinstead of lost/failed flags
1.17.6 #
- [Fix]
scanResults: clear scan results onstopScan(regression in 1.16.8)
1.17.5 #
- [Example] accidentally left
performanceOverlayenabled (regression in 1.17.4)
1.17.4 #
- [Example] remove
PermissionHandlerdependency. It is no longer needed. - [Example] ScanScreen: use
ListViewinstead ofSingleChildScrollView
1.17.3 #
- [Fix] android:
turnOnthrows exception if permission denied (bug in originalflutter_blue)
1.17.2 #
This bug affected mtu, lastValueStream, adapterState, & bondState.
- [Fix]
newStreamWithInitialValuewas not emitting initial value. (regression in 1.16.6)
1.17.1 #
- [Fix] timeout when
connectis called when adapter is off (bug in originalflutter_blue) - [Fix] android: was not calling
disconnectcallback when adapter turned off (bug in originalflutter_blue) - [Fix] android:
connectableflag was not working (regression in 1.7.0) - [Improve] do not re-get
adapterStatewhen we already have it
1.17.0 #
This release improves lastValue & lastValueStream.
- [Breaking Change/Fix] should update
lastValue&lastValueStreamwhenwriteis called - [Feature] Android: support
onNameChanged&onServicesChangedcharacteristics - [Fix] iOS:
discoverServicescrash "[_NSInlineData intValue]: unrecognized selector sent to instance" (bug in originalflutter_blue) - [Fix] iOS:
descriptor.writewould timeout or not work (regression somewhere around ~1.7.0) - [Fix]
isNotifyingwas not updated bysetNotifyValue(false)(regression somewhere around ~1.9.0)
1.16.12 #
- [Fix] Android:
onValueReceivedwas not working on Android 12 & lower (regression in 1.16.3)
1.16.11 #
- [Fix] Android:
onCharacteristicReceivednot being called (regression in 1.16.3)
1.16.10 #
- [Fix] BluetoothDevice: don't wait for timeout if device becomes disconnected (bug in original
flutter_blue)
1.16.9 #
- [Example] cleaned up Characteristic tile code
1.16.8 #
- [Fix]
scanResults&isScanningstreams were not re-emitting their current value on listen (regression in 1.5.0) - [Example]
discoverServices: stay on screen after diconnection - [Example] simplified
connectingOrDisconnectingcode - [Example] organize into 'screens' and 'widgets' folders
1.16.7 #
- [Rename]
isAvailable->isSupported
1.16.6 #
- [Example] Refactor: hugely refactored to use stateful widgets
- [Example] Fix: stream already listened to error
- [Improve]
connectionState&mtu: use broadcast stream
1.16.5 #
- [Fix] iOS: iOS Unhandled Exception: type 'int' is not a subtype of type 'bool' (regression in 1.16.3)
- [Improve] android: prepend logs with '[FBP]'
- [Java] rename
com.boskokg.flutter_blue_plus->com.lib.flutter_blue_plusto be more generic
1.16.4 #
- [Fix]
setLogLevelwould be ignored due to being called twice (regression in 1.10.0) - [Improve] android: use log level consistently
- [Improve] iOS: use log level macro
1.16.3 #
- [Fix] Android:
setNotifywould timeout if CCCD descriptor does not exist (regression in 1.5.0) - [Android] fix deprecations
- [Improve]
removeIfGone: only push to scanResults when list changes
1.16.2 #
- [Fix] platform check in
onNameChanged&onServicesChangedwas incorrect
1.16.1 #
- [Add] iOS: add support for
onServicesChanged&onNameChanged
1.16.0 #
This release simplifies BluetoothDevice construction.
- [Breaking Change] remove
BluetoothDevice.type&BluetoothDevice.localNamefrom constructor for simplicity - [Breaking Change] remove
servicesStream&isDiscoveringServicesdeprecated functions - [Rename]
localName->platformNameto reflect platform specific behavior - [Fix]
setNotifyValuemust takedescWritemutex (bug in originalflutter_blue) - [Fix]
localNamewas broken when usingconnectedSystemDevices(regression in 1.15.10) - [Add] Android:
getPhySupport
1.15.10 #
- [Fix] iOS:
localNamedoes not match Android (bug in originalflutter_blue) - [Fix] flutterHotRestart: error was thrown if device did not have bluetooth adapter (regression in 1.14.19)
1.15.9 #
- [Fix] iOS: adapter turnOff: edge case when adapter is turned off while scanning (bug in original
flutter_blue) - [Fix] iOS: adapter turnOff: disconnect handlers not firing when adapter turned off (bug in original
flutter_blue) - [Fix] iOS: adapter turnOff: API MISUSE when adapter is turned off (bug in original
flutter_blue) - [Cleanup] Hot Restart: use separate
connectedCountmethod for clarity
1.15.8 #
- [Fix] if any platform exception happens, fbp will deadlock (regression in 1.14.20)
1.15.7 #
- [Fix] android: turning bluetooth off would not fully disconnect devices (regression in 1.14.19)
1.15.6 #
- [Fix] iOS: turning bluetooth off would not fully disconnect devices (regression in 1.14.19)
- [Readme] add v1.15.0 migration guides
1.15.5 #
- [Fix]
firstWhereOrNullconflict (regression in 1.15.0)
1.15.4 #
- [Fix] some typos in disconnect exceptions (regression in 1.15.3)
1.15.3 #
- [Improve] prefer dart exceptions over platform exceptions when device is disconnected
1.15.2 #
- [Fix]
stopScanwas not awaiting for invokeMethod (regression in 1.15.0)
1.15.1 #
- [Fix]
FlutterBluePlus.scanResultsshould always return list copy to avoid iteration exceptions (regression in 1.15.0)
1.15.0 #
Scanning API Changes #
Overview:
- [Refactor] simplify scanning api
- [Feature] add
removeIfGoneoption tostartScan
Breaking Changes & Improvements:
- (simplify) removed
FlutterBluePlus.scan. UseFlutterBluePlus.scartScan(oneByOne: true)instead. - (simplify) removed
allowDuplicatesoption forscartScan. It is not supported on android. We always filter duplicates anyway. - (simplify) removed
macAddressesoption forscartScan. It was not supported on iOS, and is overall not very useful. - (simplify)
startScannow returnsFuture<void>instead ofFuture<List<ScanResult>>. It was redundant and confusing. - (improvement) if you
await startScanit will complete once the scan starts, instead of when it ends - (improvement) if you call
startScantwice, it will cancel the previous scan, instead of throwing an exception
1.14.24 #
- [Fix] Android:
setNotifyValue: "(code: 5) notifications were not updated" (regression in 1.14.23) - [Fix] Hot Restart: stop scanning when hot restarting (bug in original
flutter_blue)
1.14.23 #
- [Fix]
setNotifyValue& others must be cleared after disconnection (regression in 1.14.21)
1.14.22 #
- [Fix] Android: Hot Restart: could get stuck in infinite loop (regression in 1.14.19)
1.14.21 #
- [Refactor] dart: store
lastValueat global level so Desc & Chr classes are fully immutable
1.14.20 #
- [Fix] iOS: Hot Restart: could get stuck in infinite loop (regression in 1.14.19)
1.14.19 #
- [Fix] Hot Restart: close all connections when dart vm is restarted (bug in original
flutter_blue)
1.14.18 #
- [Fix] Android: crash
uuid128null deref (regression in 1.14.17)
1.14.17 #
- [Fix] Android: shortUUID: characteristic not found (bug in original
flutter_blue)
1.14.16 #
- [Fix] macOS: lower required version to 10.11 (equivalent to iOS 9.0)
1.14.15 #
- [Rename]
allowSplits->allowLongWrite
1.14.14 #
- [Fix] Android: "dataLen longer than allowed" (regression in 1.14.13)
1.14.13 #
- [Fix] iOS: onMtu was not called (bug in original
flutter_blue) - [Feature] iOS & Android:
writeCharacteristic: addallowLongWriteoption to do longer writes
1.14.12 #
- [Feature] support harmony