Я пытаюсь flutter_blue
подключиться к устройству Bluetooth и прочитать данные, передаваемые через него.В моем случае предыдущий экран уже проверяет, подключено ли устройство, и отправляет его на следующий экран.На следующем экране я пытаюсь прочитать характеристики.
Итак, на новом экране я вызывал другую функцию для обнаружения служб и считывания характеристик следующим образом.
@override
Widget build(BuildContext context) {
// Here is just a placeholder for a list of mock units
discoverServices();
.....
}
void discoverServices() {
// device is : connected device passed from another screen.
device.discoverServices().then((s) {
services = s;
for (BluetoothService service in services) {
for (BluetoothCharacteristic c in service.characteristics) {
if (c.uuid == new Guid('XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX')) {
print('uuid found');
_readCharacteristic(c)
}
}
}
}
Future<void> _readCharacteristic(BluetoothCharacteristic c) async {
try {
data = await device.readCharacteristic(c);
setState((){
// setting value for different object
myDevice.setValue(data);
});
} catch(e){
print(e);
}
}
_readCharacteristic вызывается, когда характеристики обнаруживаются внутри DiscoverServices ().И после завершения _readCharacteristic я пытаюсь установить значение состояния для моего объекта.Но он ничего не читает и ничего не устанавливает.
Я что-то упустил из-за использования Flutterblue?Любые мысли будут полезны.