【发布时间】:2020-11-14 07:43:03
【问题描述】:
我有一个 Flutter 应用程序,它使用 flutter_blue 包从蓝牙低功耗设备接收数据流。我用一台旧平板电脑测试了我的应用程序,其中一个源设备每秒 3-4 次将数据摄取到流中。显然,低迷的平板电脑跟不上需求。因此,当信息流停止时,我的应用程序仍然会显示不断变化的数据,因为它会遍历流中的每个事件,直到它到达末尾。
我想要删除设备无法跟上的任何事件。对于我的应用程序,如果某些帧被丢弃,这不是问题。用网络比喻说话:UDP连接对我来说就足够了,我不需要TCP。
// Widget field:
BluetoothCharacteristic _primaryMeasurements;
// later:
await _primaryMeasurements.setNotifyValue(true);
_primaryMeasurements.value.listen((data) async {
if (data != null && data.length > 1) {
await _recordMeasurement(data);
}
});
// Even later, this is obviously over simplified essence
@override
Widget build(BuildContext context) {
return Text('${data[3]}'),
}
我不清楚如何以只丢失“堆积”的碎片的方式从流中丢弃碎片,并且仅在设备“蹩脚”的情况下。
【问题讨论】:
标签: flutter dart stream bluetooth-lowenergy