initialize method
Future<void>
initialize({
- required SDKEnvironment environment,
- String? apiKey,
- String? baseURL,
- String? deviceId,
Initialize C++ state manager
Implementation
Future<void> initialize({
required SDKEnvironment environment,
String? apiKey,
String? baseURL,
String? deviceId,
}) async {
try {
final lib = PlatformLoader.loadCommons();
// First load secure storage cache for platform adapter
await loadSecureStorageCache();
// Initialize state
final initState = lib.lookupFunction<
Int32 Function(Int32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
int Function(int, Pointer<Utf8>, Pointer<Utf8>,
Pointer<Utf8>)>('rac_state_initialize');
final envValue = _environmentToInt(environment);
final apiKeyPtr = (apiKey ?? '').toNativeUtf8();
final baseURLPtr = (baseURL ?? '').toNativeUtf8();
final deviceIdPtr = (deviceId ?? '').toNativeUtf8();
try {
final result = initState(envValue, apiKeyPtr, baseURLPtr, deviceIdPtr);
if (result != RacResultCode.success) {
_logger.warning('State init failed', metadata: {'code': result});
}
} finally {
calloc.free(apiKeyPtr);
calloc.free(baseURLPtr);
calloc.free(deviceIdPtr);
}
// Register persistence callbacks
_registerPersistenceCallbacks();
// Load stored auth from secure storage into C++ state
await _loadStoredAuth();
_logger.debug('C++ state initialized');
} catch (e, stack) {
_logger.debug('rac_state_initialize error: $e', metadata: {
'stack': stack.toString(),
});
}
}