searchCountries static method

TaskHandler? searchCountries(
  1. String filter,
  2. void onComplete(
    1. GemError err,
    2. List<Landmark> landmarks
    )
)

Search for countries by name.

Performs a top-level address search restricted to country-level results. Useful to obtain a country-level Landmark that can be used as a parent for further hierarchical searches in search.

Parameters

  • filter: Filter string applied to country names. If empty, returns all countries (subject to engine limits).
  • onComplete: Callback invoked when the search completes. It provides:
    • err: The resulting GemError code for the operation.
    • landmarks: List of matching landmarks (empty on failure).

Returns

  • TaskHandler?: Associated TaskHandler if the search can be started; otherwise null.

Also see:

Implementation

static TaskHandler? searchCountries(
  final String filter,
  final void Function(GemError err, List<Landmark> landmarks) onComplete,
) {
  final EventDrivenProgressListener progListener =
      EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(progListener.id, progListener);
  final LandmarkList results = LandmarkList();
  final Landmark emptyParent = Landmark();

  progListener.registerOnCompleteWithData((
    final int err,
    final String hint,
    final Map<dynamic, dynamic> json,
  ) {
    GemKitPlatform.instance.unregisterEventHandler(progListener.id);

    if (err == GemError.success.code || err == GemError.reducedResult.code) {
      onComplete(GemErrorExtension.fromCode(err), results.toList());
    } else {
      onComplete(GemErrorExtension.fromCode(err), <Landmark>[]);
    }
  });

  final OperationResult resultString = staticMethod(
    'GuidedAddressSearchService',
    'search',
    args: <String, dynamic>{
      'results': results.pointerId,
      'parent': emptyParent.pointerId,
      'filter': filter,
      'detailToSearch': AddressDetailLevel.country.id,
      'progress': progListener.id,
    },
  );

  final int errorCode = resultString['result'];

  if (errorCode != GemError.success.code) {
    onComplete(GemErrorExtension.fromCode(errorCode), <Landmark>[]);
    return null;
  }

  return TaskHandlerImpl(progListener.id);
}