getExternalInfo static method

ExternalInfo getExternalInfo(
  1. Landmark landmark, {
  2. void onWikiDataAvailable(
    1. ExternalInfo? externalInfo
    )?,
})

Requests information about a landmark on wikipedia.

Parameters

  • IN landmark Landmark for which the request will be done.
  • IN onWikiDataAvailable callback to be triggered after the wikipedia request is done. It will be called with the external info object on success and null on error.

Returns

  • The external info object. The onWikiDataAvailable callback should be awaited before accessing data from the object.

Throws

  • An exception if it fails.

Implementation

static ExternalInfo getExternalInfo(
  final Landmark landmark, {
  final void Function(ExternalInfo? externalInfo)? onWikiDataAvailable,
}) {
  final ExternalInfo pExternalInfo = ExternalInfo();

  if (onWikiDataAvailable != null) {
    final bool hasExternalInfo = pExternalInfo.hasWikiInfo(landmark);
    if (hasExternalInfo) {
      final EventDrivenProgressListener wikiListener =
          EventDrivenProgressListener();
      wikiListener.registerOnCompleteWithDataCallback((
        final int err,
        final String hint,
        final Map<dynamic, dynamic> json,
      ) {
        GemKitPlatform.instance.unregisterEventHandler(wikiListener.id);
        if (err == 0) {
          onWikiDataAvailable(pExternalInfo);
        }
      });
      GemKitPlatform.instance.registerEventHandler(
        wikiListener.id,
        wikiListener,
      );
      pExternalInfo._requestWikiInfo(landmark, wikiListener);
    } else {
      onWikiDataAvailable(null);
    }
  }

  return pExternalInfo;
}