navigine_sdk_flutter_ImageProvider_ToFfi function

Pointer<Void> navigine_sdk_flutter_ImageProvider_ToFfi(
  1. ImageProvider provider
)

Implementation

Pointer<Void> navigine_sdk_flutter_ImageProvider_ToFfi(ImageProvider provider) {
  final heap = GetImageProviderData.heap;
  final sendPort = heap.sendPort;
  final providerId = navigine_sdk_flutter_String_ToFfi(provider.id);
  final nativeObject =
      newImageProvider(provider.cacheable, sendPort, providerId);
  navigine_sdk_flutter_String_ReleaseFfiHandle(providerId);
  if (nativeObject == nullptr) {
    throw StateError('Failed to create native ImageProvider handle.');
  }

  // `nativeObject` is the transient FFI handle released after the call.
  // Native async callbacks use the underlying ImageProviderBinding* as key.
  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.');
  }
  heap.insertObject(nativeObjectKey, provider);

  return nativeObject;
}