initialize method

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

Implementation

Future<void> initialize({
  String? providerBundleIdentifier,
  String? localizedDescription,
  String? groupIdentifier,
  Function(VpnStatus status)? lastStatus,
  Function(VPNStage stage)? lastStage,
}) async {
  if (Platform.isIOS) {
    assert(
    groupIdentifier != null &&
        providerBundleIdentifier != null &&
        localizedDescription != null,
    "These values are required for ios.");
  }
  onVpnStatusChanged?.call(VpnStatus.empty());
  initialized = true;
  _initializeListener();
  return _channelControl.invokeMethod("initialize", {
    "groupIdentifier": groupIdentifier,
    "providerBundleIdentifier": providerBundleIdentifier,
    "localizedDescription": localizedDescription,
  }).then((value) {
    Future.wait([
      status().then((value) => lastStatus?.call(value)),
      stage().then((value) {
        if (value == VPNStage.connected && _vpnStatusTimer == null) {
          _createTimer();
        }
        return lastStage?.call(value);
      }),
    ]);
  });
}