getForecast static method
- required List<
TimeDistanceCoordinate> coords, - required void onCompleteCallback(
- GemError,
- List<
LocationForecast> locationForecasts
Async gets forecast weather for a list of coordinates and timestamps.
Parameters
- IN coords The coordinates & timestamps list for which the forecast is requested. The TimeDistanceCoordinate.stamp should be the number of seconds relative to current time.
- 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
- ProgressListener for the operation progress
Throws
- An exception if it fails.
Implementation
static ProgressListener getForecast({
required final List<TimeDistanceCoordinate> coords,
required final void Function(
GemError,
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 resultString = staticMethod(
'Weather',
'getForecast',
args: <String, dynamic>{
'coords': coords,
'result': result.id,
'listener': listener.id,
},
);
final GemError errCode = GemErrorExtension.fromCode(resultString['result']);
if (errCode != GemError.success) {
onCompleteCallback(errCode, <LocationForecast>[]);
}
return listener;
}