blues 1.0.0+1 copy "blues: ^1.0.0+1" to clipboard
blues: ^1.0.0+1 copied to clipboard

discontinued

Bluetooth Low Energy plugin for Flutter. This plugin provides a cross-platform (Android, iOS) API to access platform specific Bluetooth Low Energy services.

Flutter Blues Plugin #

Blues is a bluetooth plugin for Flutter and provides Bluetooth LE connectivity for both iOS and Android. It is a fork from the original FlutterBlue plugin with some minor fixes.

Using the Blues 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 #

Blues flutterBlues = Blues.instance;

Scan for devices #

// Start scanning
flutterBlues.startScan(timeout: Duration(seconds: 4));

// Listen to scan results
var subscription = flutterBlues.scanResults.listen((scanResult) {
    // do something with scan result
    device = scanResult.device;
    print('${device.name} found! rssi: ${scanResult.rssi}');
});

// Stop scanning
flutterBlues.stopScan();

Connect to a device #

// Connect to the device
await device.connect();

// Disconnect from device
device.disconnect();

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 c.read();
    print(value);
}

// Writes to a characteristic
await c.write([0x12, 0x34])

Read and write descriptors #

// Reads all descriptors
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
    List<int> value = await d.read();
    print(value);
}

// Writes to a descriptor
await d.write([0x12, 0x34])

Set notifications and listen to changes #

await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
    // do something with new value
});

Read the MTU and request larger size #

final mtu = await device.mtu.first;
await device.requestMtu(512);

Note that iOS will not allow that you request the MTU size, but will always try to negotiate the highest possible MTU (iOS supports up to MTU size 185)

Reference #

Blues API #

Android iOS Description
scan Starts a scan for Bluetooth Low Energy devices.
state Stream of state changes for the Bluetooth Adapter.
isAvailable Checks whether the device supports Bluetooth.
isOn Checks if Bluetooth functionality is turned on.

BluetoothDevice API #

Android iOS Description
connect Establishes a connection to the device.
disconnect Cancels an active or pending connection to the device.
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.
state Stream of state changes for the Bluetooth Device.
mtu Stream of mtu size changes.
requestMtu Request to change the MTU for the device.

BluetoothCharacteristic API #

Android iOS Description
read Retrieves the value of the characteristic.
write Writes the value of the characteristic.
setNotifyValue Sets notifications or indications on the characteristic.
value Stream of characteristic's value when changed.

BluetoothDescriptor API #

Android iOS Description
read Retrieves the value of the descriptor.
write Writes the value of the descriptor.

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.

Issues #

Please file any issues, bugs or feature request as an issue on our GitHub page.

Want to contribute #

If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature), please carefully review our contribution guide and send us your pull request.

Author #

This Blues plugin for Flutter is developed by Baseflow. You can contact us at hello@baseflow.com

5
likes
35
points
2
downloads

Publisher

verified publisherbaseflow.com

Weekly Downloads

Bluetooth Low Energy plugin for Flutter. This plugin provides a cross-platform (Android, iOS) API to access platform specific Bluetooth Low Energy services.

Repository (GitHub)
View/report issues
Contributing

License

BSD-3-Clause (license)

Dependencies

collection, convert, flutter, meta, protobuf, rxdart

More

Packages that depend on blues

Packages that implement blues