更新控制跳转

This commit is contained in:
wyf
2025-07-01 21:01:28 +08:00
parent fea07492f7
commit d6e85aeea2
15 changed files with 350 additions and 238 deletions

View File

@@ -170,8 +170,28 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
mac: r.device.remoteId.str.replaceAll(':', ''));
}).toList();
final currentDevices = mhtBlueToothController.model.blueRawData ?? [];
final newDevices = <BlueToothDataModel>[];
for (var newDevice in filteredResults) {
// 检查设备是否已存在
final existingIndex =
currentDevices.indexWhere((d) => d.mac == newDevice.mac);
if (existingIndex >= 0) {
// 更新已有设备信息(如信号强度)
currentDevices[existingIndex] = newDevice;
} else {
// 添加新设备
newDevices.add(newDevice);
}
}
setState(() {
mhtBlueToothController.model.blueRawData = filteredResults;
mhtBlueToothController.model.blueRawData = [
...currentDevices,
...newDevices
];
});
});
@@ -189,6 +209,7 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
void _startPeriodicScan() {
_timer = Timer.periodic(Duration(seconds: 10), (timer) {
if (mhtBlueToothController.shouldScan.value && !isScanning) {
_removeOldDevices(); // 先清理老旧设备
_startScanning();
}
});
@@ -693,4 +714,20 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
),
);
}
void _removeOldDevices() {
final now = DateTime.now();
final currentDevices = mhtBlueToothController.model.blueRawData ?? [];
// 移除30秒内未出现的设备
final updatedDevices = currentDevices.where((device) {
return now.difference(device.lastSeen) < Duration(seconds: 30);
}).toList();
if (updatedDevices.length != currentDevices.length) {
setState(() {
mhtBlueToothController.model.blueRawData = updatedDevices;
});
}
}
}