getCurrent static method

ProgressListener getCurrent({
  1. required List<Coordinates> coords,
  2. required void onCompleteCallback(
    1. GemError error,
    2. List<LocationForecast> locationForecasts
    ),
})

Async gets current weather for a list of coordinates.

Parameters

  • IN coords The coordinates list for which the current weather is requested.
  • IN onCompleteCallback The callback which will be called when the operation completes.
    • Will be called with GemError.success error and non-empty locationForecasts upon success.
    • Will be called with GemError.invalidInput error and empty locationForecasts if the coordinates list is empty.
    • Will be called with GemError.resourceMissing error and empty locationForecasts if the internal engine resource is missing
    • Will be called with GemError.outOfRange error and empty locationForecasts if number of coordinates is greater than the maximum allowed.
    • Will be called with other GemError values and empty locationForecasts on other errors

Returns

Throws

  • An exception if it fails.

Implementation

static ProgressListener getCurrent({
  required final List<Coordinates> coords,
  required final void Function(
    GemError error,
    List<LocationForecast> locationForecasts,
  ) onCompleteCallback,
}) {
  final LocationForecastList result = LocationForecastList.create();
  final EventDrivenProgressListener listener = EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(listener.id, listener);

  listener.registerOnCompleteWithDataCallback((
    final int err,
    final String hint,
    final Map<dynamic, dynamic> json,
  ) {
    GemKitPlatform.instance.unregisterEventHandler(listener.id);
    if (err == 0) {
      onCompleteCallback(GemErrorExtension.fromCode(err), result.getJson());
      result.dispose();
    } else {
      onCompleteCallback(
        GemErrorExtension.fromCode(err),
        <LocationForecast>[],
      );
    }
  });
  final OperationResult resultOperation = staticMethod(
    'Weather',
    'getCurrent',
    args: <String, dynamic>{
      'coords': coords,
      'result': result.id,
      'listener': listener.id,
    },
  );
  final GemError errCode = GemErrorExtension.fromCode(
    resultOperation['result'],
  );
  if (errCode != GemError.success) {
    onCompleteCallback(errCode, <LocationForecast>[]);
  }
  return listener;
}