toNativeImageProviderPtr function
Returns ImageProvider native pointer for callbacks (binding key or native provider).
Implementation
Pointer<Void> toNativeImageProviderPtr(ImageProvider provider) {
if (provider is NativeImageProviderWrapper) {
return provider.rawPointer;
}
if (provider._bindingKey != null) {
return provider._bindingKey!;
}
final heap = GetImageProviderData.heap;
final sendPort = heap.sendPort;
final nativeObject = newImageProvider(
provider.cacheable, sendPort, toNativeString(provider.id));
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);
ImageProviderImpl.releaseNativePtr(nativeObject);
return nativeObjectKey;
}