flutter - 如何在继续之前等待实际建立 ble 连接
问题描述
我正在使用 Flutter 的 flutter_reactive_ble 包,但在尝试在 for 循环中执行操作时遇到问题。
情况:
- 我有一个设备 ID 列表
- 我想遍历这个列表并执行以下操作:连接、写入某些特征、断开连接
这是我的代码:(注意:这是在 IconButton 的 onPressed 部分)
IconButton(
...
...
onPressed:
for (String deviceId in deviceIdList) {
try {
await Provider.of<BleDeviceConnector>(context, listen: false)
.connect(deviceId)
.then((value) => loadStuff(context))
.then((value) =>
Provider.of<BleDeviceConnector>(context, listen: false)
.disconnect(deviceId));
} catch (e) {
print(e);
}
)
我遇到的问题是第一个“连接”函数被调用,但在继续循环之前它不会等待实际连接。
这导致整个循环在我的设备连接之前完成。
仅供参考...第一台设备确实最终连接了,但是整个应用程序冻结了,因为我相信它处于丢失状态。
感谢您的任何帮助/建议。
- - 更新 - -
我决定将其拆分,并能够让循环连接并加载到多个设备。
但是,我仍然无法与所有连接的设备断开连接。我有一个我连接到的设备 ID 列表,并尝试了以下操作:
for 循环在 deviceIdList 中的每个 deviceId 上调用以下内容:
await Provider.of<BleDeviceConnector>(context, listen: false).disconnect(deviceId);
实现了一个按钮,尝试一次断开与一台设备的连接(每个按钮单击一个)
两次尝试都导致能够与列表中的第一个连接设备断开连接,但未能成功断开与其余任何设备的连接。
有任何想法吗?谢谢!
解决方案
推荐阅读
- c# - 单元测试自定义 InputFormatter
- excel - 将 Outlook 日历数据导入工作表
- vba - 构建和编写程序以在 Visual Basic 中绘制星号矩形
- node.js - Nodejs + ws:如何模拟客户端崩溃和未关闭的 TCP 连接?
- mysql - 处理数据库中统计信息的最佳方法?
- ruby-on-rails - 手动加密和解密 cookie - Rails
- python - 正确保存 yolov4x-mish 文件模型
- neural-network - 在来自预训练模型的缓存嵌入之上训练 NN,损失不会下降?
- javascript - Phaser - 在创建函数之外使用 getChildByName 访问 DOM 元素
- charts - 如何将文本添加到 Chart.js 中的点?