flutter_ble 0.5.3 flutter_ble: ^0.5.3 copied to clipboard
A new Flutter plugin for longev.ai.
Introduction #
FlutterBle is a bluetooth plugin for Flutter, a new mobile SDK to help developers build modern apps for iOS and Android. fork of FlutterBlue
Cross-Platform Bluetooth LE #
FlutterBle aims to offer the most from both platforms (iOS and Android).
Using the FlutterBle instance, you can scan for and connect to nearby devices (BluetoothDevice). Once connected to a device, the BluetoothDevice object can discover services (BluetoothService), characteristics (BluetoothCharacteristic), and descriptors (BluetoothDescriptor). The BluetoothDevice object is then used to directly interact with characteristics and descriptors.
Usage #
Obtain an instance #
FlutterBle flutterBlue = FlutterBle.instance;
Scan for devices #
/// Start scanning
var scanSubscription = flutterBlue.scan().listen((scanResult) {
// do something with scan result
});
/// Stop scanning
scanSubscription.cancel();
Connect to a device #
/// Create a connection to the device
var deviceConnection = flutterBlue.connect(device).listen((s) {
if(s == BluetoothDeviceState.connected) {
// device is connected, do something
}
});
/// Disconnect from device
deviceConnection.cancel();
Discover services #
List<BluetoothService> services = await device.discoverServices();
services.forEach((service) {
// do something with service
});
Read and write characteristics #
// Reads all characteristics
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List<int> value = await device.readCharacteristic(c);
print(value);
}
// Writes to a characteristic
await device.writeCharacteristic(c, [0x12, 0x34])
Read and write descriptors #
// Reads all descriptors
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
List<int> value = await device.readDescriptor(d);
print(value);
}
// Writes to a descriptor
await device.writeDescriptor(d, [0x12, 0x34])
Set notifications #
await device.setNotifyValue(characteristic, true);
device.onValueChanged(characteristic).listen((value) {
// do something with new value
});
Reference #
FlutterBle API #
Android | iOS | Description | |
---|---|---|---|
scan | ✅ | ✅ | Starts a scan for Bluetooth Low Energy devices. |
connect | ✅ | ✅ | Establishes a connection to the Bluetooth Device. |
state | ✅ | ✅ | Gets the current state of the Bluetooth Adapter. |
onStateChanged | ✅ | ✅ | Stream of state changes for the Bluetooth Adapter. |
BluetoothDevice API #
Android | iOS | Description | |
---|---|---|---|
discoverServices | ✅ | ✅ | Discovers services offered by the remote device as well as their characteristics and descriptors. |
services | ✅ | ✅ | Gets a list of services. Requires that discoverServices() has completed. |
readCharacteristic | ✅ | ✅ | Retrieves the value of a specified characteristic. |
readDescriptor | ✅ | ✅ | Retrieves the value of a specified descriptor. |
writeCharacteristic | ✅ | ✅ | Writes the value of a characteristic. |
writeDescriptor | ✅ | ✅ | Writes the value of a descriptor. |
setNotifyValue | ✅ | ✅ | Sets notifications or indications on the specified characteristic. |
onValueChanged | ✅ | ✅ | Notifies when the characteristic's value has changed. |
state | ✅ | ✅ | Gets the current state of the Bluetooth Device. |
onStateChanged | ✅ | ✅ | Notifies of state changes for the Bluetooth Device. |
Troubleshooting #
Scanning for service UUID's doesn't return any results #
Make sure the device is advertising which service UUID's it supports. This is found in the advertisement packet as UUID 16 bit complete list or UUID 128 bit complete list.