join method

Future<void> join(
  1. String? ssid,
  2. String passphrase
)

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;
}