getNativePtr static method
Implementation
static Pointer<Void> getNativePtr(ImageProvider? provider) {
if (provider == null) return Pointer<Void>.fromAddress(0);
if (provider is NativeImageProviderWrapper) {
return provider.rawPointer;
}
if (provider._bindingKey != null) {
final handle = _navigine_sdk_flutter_image_provider_Acquire(
provider._bindingKey!);
if (handle == nullptr) {
throw StateError('Failed to acquire native ImageProvider handle.');
}
return handle;
}
final heap = GetImageProviderData.heap;
final sendPort = heap.sendPort;
final providerId = toNativeString(provider.id);
final nativeObject =
newImageProvider(provider.cacheable, sendPort, providerId);
if (nativeObject == nullptr) {
throw StateError('Failed to create native ImageProvider handle.');
}
final nativeObjectKey =
_navigine_sdk_flutter_image_provider_GetObjectKey(nativeObject);
if (nativeObjectKey == nullptr) {
_navigine_sdk_flutter_image_provider_ReleaseHandle(nativeObject);
throw StateError('Failed to get native ImageProvider callback key.');
}
provider._bindingKey = nativeObjectKey;
heap.insertObject(nativeObjectKey, provider);
return nativeObject;
}