refreshWifiNetworks method
Implementation
Future<void> refreshWifiNetworks({String? ssid}) async {
final WifiScanStatus? initialStatus =
await bleManager.sendCommand<WifiScanStatus>(
WifiCheckScanStatusBleCommandTx(),
);
if (initialStatus == null || initialStatus.done) {
await bleManager.sendCommand<void>(
WifiStartScanBleCommandTx(ssid: ssid),
);
}
WifiScanStatus? status = await bleManager.sendCommand<WifiScanStatus>(
WifiCheckScanStatusBleCommandTx(),
);
int pollCount = 0;
const int maxPollCount = 10;
const pollDelay = Duration(milliseconds: 500);
final List<WifiNetwork> networks = [];
int lastNumResults = 0;
while (status != null && !status.done && pollCount < maxPollCount) {
await Future.delayed(pollDelay);
status = await bleManager.sendCommand<WifiScanStatus>(
WifiCheckScanStatusBleCommandTx(),
);
if (status != null && status.numResults > lastNumResults) {
await _fetchWifiScanResults(
networks,
lastNumResults,
status.numResults,
);
lastNumResults = status.numResults;
}
pollCount++;
}
// Final fetch in case scan completed between last check and now
if (status != null && status.numResults > lastNumResults) {
await _fetchWifiScanResults(
networks,
lastNumResults,
status.numResults,
);
}
}