getDailyForecast static method
- required int days,
- required List<
Coordinates> coords, - void onComplete(
- GemError error,
- List<
LocationForecast> locationForecasts
Retrieves daily weather forecast for specified coordinates.
Parameters
days: Number of days for which forecast is requested (must be ≤ maxDayForDailyForecast).coords: List of coordinates for which to fetch daily forecast.onComplete: Callback invoked when the operation completes. The callback is called with:- GemError.success and non-empty LocationForecast list on success.
- GemError.invalidInput and empty list if coordinates list is empty or days is negative.
- GemError.resourceMissing and empty list if internal engine resource is missing.
- GemError.outOfRange and empty list if number of coordinates or days exceeds maximum allowed.
- Other GemError values and empty list on other errors.
Returns
- ProgressListener: Progress listener for tracking the operation.
Also see:
- maxDayForDailyForecast — Maximum days allowed per daily forecast request.
Implementation
static ProgressListener getDailyForecast({
required final int days,
required final List<Coordinates> coords,
final void Function(
GemError error,
List<LocationForecast> locationForecasts,
)?
onComplete,
}) {
final LocationForecastList result = LocationForecastList.create();
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?.call(GemErrorExtension.fromCode(err), result.getJson());
result.dispose();
} else {
onComplete?.call(GemErrorExtension.fromCode(err), <LocationForecast>[]);
}
});
final OperationResult resultString = staticMethod(
'Weather',
'getDailyForecast',
args: <String, dynamic>{
'days': days,
'coords': coords,
'result': result.id,
'listener': listener.id,
},
);
final GemError errCode = GemErrorExtension.fromCode(resultString['result']);
if (errCode != GemError.success) {
onComplete?.call(errCode, <LocationForecast>[]);
}
return listener;
}