join method
Implementation
Future<void> join(String? ssid, String passphrase) async {
if (state != WifiProvisioningState.scanning) {
throw StateError('join called in unexpected state $_state');
}
if (ssid == null) {
if (selectedAccessPoint == null) {
throw StateError('join called when selectedAccessPoint is null');
}
if (selectedAccessPoint! < 0 ||
selectedAccessPoint! > accessPoints!.length) {
throw StateError(
'join called when selectedAccessPoint has invalid value '
'$selectedAccessPoint',
);
}
// Assigning a default value to a null parameter is allowed
// ignore: parameter_assignments
ssid = accessPoints![selectedAccessPoint!]['ssid'] as String;
}
_state = WifiProvisioningState.testing;
_log.info('send wifi');
var success =
await provisioning!.sendWifiConfig(ssid: ssid, password: passphrase);
if (!success) {
_log.severe('send wifi config failed');
_state = WifiProvisioningState.sessionFailure;
return;
}
_log.info('apply wifi');
success = await provisioning!.applyWifiConfig();
if (!success) {
_log.severe('apply wifi config failed');
_state = WifiProvisioningState.sessionFailure;
return;
}
_status = await provisioning!.pollStatus(const Duration(seconds: 10));
if (!_status.isSuccess()) {
_log.severe(
'could not connect to provisioned access point '
'${_status?.state} '
'${_status?.failedReason}',
);
_state = WifiProvisioningState.failure;
return;
}
_state = WifiProvisioningState.success;
return;
}