initialize method

Future<void> initialize({
  1. String? providerBundleIdentifier,
  2. String? localizedDescription,
  3. String? groupIdentifier,
  4. dynamic lastStatus(
    1. OpenConnectStatus status
    )?,
  5. dynamic lastStage(
    1. OCStage stage
    )?,
})

Initialize the engine. Must be called once before connect.

On iOS, providerBundleIdentifier, localizedDescription and groupIdentifier are required.

Implementation

Future<void> initialize({
  String? providerBundleIdentifier,
  String? localizedDescription,
  String? groupIdentifier,
  Function(OpenConnectStatus status)? lastStatus,
  Function(OCStage stage)? lastStage,
}) async {
  if (Platform.isIOS) {
    assert(
      groupIdentifier != null &&
          providerBundleIdentifier != null &&
          localizedDescription != null,
      'groupIdentifier, providerBundleIdentifier and localizedDescription '
      'are required for iOS.',
    );
  }

  onVpnStatusChanged?.call(OpenConnectStatus.empty());
  initialized = true;
  _initializeListener();

  return _channelControl.invokeMethod('initialize', {
    'groupIdentifier': groupIdentifier,
    'providerBundleIdentifier': providerBundleIdentifier,
    'localizedDescription': localizedDescription,
  }).then((_) {
    Future.wait([
      status().then((s) => lastStatus?.call(s)),
      stage().then((s) {
        if (s == OCStage.connected && _statusTimer == null) {
          _startStatusTimer();
        }
        return lastStage?.call(s);
      }),
    ]);
  });
}