requestWikiImage method

ProgressListener? requestWikiImage({
  1. required int imageIndex,
  2. required ExternalImageQuality quality,
  3. required void onComplete(
    1. GemError error,
    2. Img? image
    ),
})

Asynchronously requests the binary image data for a Wikipedia image.

The image is requested in the requested quality. The result is provided via onComplete as an Img (or null on error). A ProgressListener is returned when the request starts.

Parameters

  • imageIndex: Zero-based index of the requested image.
  • quality: Desired image quality (ExternalImageQuality).
  • onComplete: Callback invoked when the request completes. Depending on the result, the callback receives a GemError and the optional image:

Returns

  • ProgressListener?: A progress listener when the operation started, otherwise null.

Example:

externalInfo.requestWikiImage(
  imageIndex: 0,
  quality: ExternalImageQuality.highImageQuality,
  onComplete: (err, info) {
    if (err == GemError.success) {
      print('Successfully retrieved Wiki image.');
      // Use the retrieved info as needed
    } else if (info != null) {
      print('Failed to retrieve Wiki image info.');
    }
  },
);

Also see:

  • imageIndex — Get the total number of images.
  • requestWikiImageInfo — Request Wikipedia image metadata.

Implementation

ProgressListener? requestWikiImage({
  required int imageIndex,
  required ExternalImageQuality quality,
  required void Function(GemError error, Img? image) onComplete,
}) {
  final ImgHolder result = ImgHolder();
  final EventDrivenProgressListener listener = EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(listener.id, listener);

  listener.registerOnCompleteWithData((
    final int err,
    final String hint,
    final Map<dynamic, dynamic> json,
  ) {
    GemKitPlatform.instance.unregisterEventHandler(listener.id);
    if (err == 0) {
      onComplete(GemErrorExtension.fromCode(err), result.value);
    } else {
      onComplete(GemErrorExtension.fromCode(err), null);
    }
    result.dispose();
  });

  objectMethod(
    pointerId,
    'ExternalInfo',
    'requestWikiImage',
    args: <String, dynamic>{
      'progressListener': listener.id,
      'nImageIdx': imageIndex,
      'image': result.pointerId,
      'imageQuality': quality.id,
    },
  );

  final GemError err = ApiErrorService.apiError;
  if (err != GemError.success) {
    GemKitPlatform.instance.unregisterEventHandler(listener.id);
    onComplete(err, null);
    return null;
  }

  return listener;
}