问题描述
GitHub https://github.com/PhilipsHue/flutter_reactive_ble/
我正在尝试修改源代码中包含的示例,以便设备列表的 onTap 可以连接和 subscribetocharacteristic。
但是,似乎connectToDevice()方法被声明为一个流,
并在方法调用之前放置 "await" 并不真正符合我的标准(在连接的设备上,然后 subscribetocharacteristic)
我如何实现这一目标?
我目前在 device_list.dart 中有什么
(device) => ListTile(
title: Text(device.name),subtitle: Text("${device.id}\nRSSI: ${device.RSSi}"),leading: const BluetoothIcon(),onTap: () async {
widget.stopScan();
await widget.deviceConn.connect(device.id);
//call to subscribetocharacteristic(characteristic);
});
解决方法
await
仅适用于方法返回未来的情况。您应该监听流,当流发出 connected
状态时,您执行订阅调用。例如:
_ble.connectToDevice(id: deviceId).listen(
(update) {
if(update.connectionState == DeviceConnectionState.connected){
// execute subscribe
}
},