initialize static method
Initializes the SDK with the provided appKey.
Returns a CloudXConfiguration on success, or null on failure.
Implementation
static Future<CloudXConfiguration?> initialize({
required String appKey,
}) async {
if (_hasInitializeBeenCalled) {
return _initializeCompleter?.future ?? Future.value(null);
}
_hasInitializeBeenCalled = true;
_initializeCompleter = Completer<CloudXConfiguration?>();
_methodChannel.setMethodCallHandler(_handleNativeMethodCall);
try {
// Hot restart detection - check if native SDK already initialized
final isPlatformSDKInitialized = await isInitialized();
if (isPlatformSDKInitialized) {
_log('SDK already initialized (hot restart detected)');
_initializeCompleter!.complete(const CloudXConfiguration());
return _initializeCompleter!.future;
}
final result = await _invokeMethod<bool>('initialize', {
'appKey': appKey,
'pluginVersion': 'flutter-$_pluginVersion',
});
final success = result ?? false;
_initializeCompleter!
.complete(success ? const CloudXConfiguration() : null);
return _initializeCompleter!.future;
} catch (e) {
_log('Initialization failed: $e');
if (!_initializeCompleter!.isCompleted) {
_initializeCompleter!.complete(null);
}
return null;
}
}