navigine_sdk_flutter_ModelProvider_ToFfi function
Implementation
Pointer<Void> navigine_sdk_flutter_ModelProvider_ToFfi(ModelProvider provider) {
final heap = ModelProviderNative.heap;
final sendPort = heap.sendPort;
final executablePort = __lib.createExecutePort();
final modelId = navigine_sdk_flutter_String_ToFfi(provider.modelId);
final nativeObject = newModelProvider(
sendPort, executablePort, modelId, ModelProviderNative.getTextureNative);
navigine_sdk_flutter_String_ReleaseFfiHandle(modelId);
if (nativeObject == nullptr) {
throw StateError('Failed to create native ModelProvider handle.');
}
// `nativeObject` is the transient FFI handle released after the call.
// Native async callbacks use the underlying ModelProviderBinding* as key.
final nativeObjectKey =
_navigine_sdk_flutter_model_provider_GetObjectKey(nativeObject);
if (nativeObjectKey == nullptr) {
_navigine_sdk_flutter_model_provider_ReleaseHandle(nativeObject);
throw StateError('Failed to get native ModelProvider callback key.');
}
heap.insertObject(nativeObjectKey, provider);
return nativeObject;
}