requestWikiImage method
ProgressListener?
requestWikiImage({
- required int imageIndex,
- required ExternalImageQuality quality,
- required void onComplete(),
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:- GemError.success for
errand the image info string forimageon success. - GemError.general for failure and
nullforimageon error.
- GemError.success for
Returns
ProgressListener?: A progress listener when the operation started, otherwisenull.
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;
}