getNativePtr static method
Implementation
static Pointer<Void> getNativePtr(ModelProvider? provider) {
if (provider == null) return Pointer<Void>.fromAddress(0);
final heap = ModelProviderNative.heap;
final sendPort = heap.sendPort;
final executablePort = __lib.createExecutePort();
final nativeObject = newModelProvider(
sendPort,
executablePort,
toNativeString(provider.modelId),
ModelProviderNative.getTextureNative);
if (nativeObject == nullptr) {
throw StateError('Failed to create native ModelProvider handle.');
}
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;
}