stopNotify method

  1. @override
Future<bool?> stopNotify({
  1. required String serviceUuid,
  2. required String characteristicUuid,
})
override

stopNotify stops listening to notifications from a BLE characteristic.

Implementation

@override
Future<bool?> stopNotify({
  required String serviceUuid,
  required String characteristicUuid,
}) async {
  if (_connectedDevice == null) {
    log("Not connected to any device");
    return false;
  }

  final service = _connectedDevice!.gattServices.firstWhereOrNull((element) {
    return element.uuid.toString().toLowerCase() == serviceUuid.toLowerCase();
  });
  if (service == null) {
    log("Service not found: $serviceUuid");
    return false;
  }

  final characteristic = service.characteristics.firstWhereOrNull((element) {
    return element.uuid.toString().toLowerCase() == characteristicUuid.toLowerCase();
  });

  if (characteristic == null) {
    log("Characteristic not found: $characteristicUuid");
    return false;
  }

  if (_notifications.containsKey(characteristic.uuid)) {
    _notifications[characteristic.uuid]?.cancel();
    _notifications.remove(characteristic.uuid);
  }

  if (!characteristic.notifying) {
    log("Characteristic not notifying: $characteristicUuid");
    return false;
  }

  await characteristic.stopNotify();
  return true;
}