# Weather Service

Last updated:

<!-- -->

October 18, 2026

<!-- -->

\| 4 minutes read

<br />

<br />

The `WeatherService` class provides methods for retrieving current, hourly, and daily weather forecasts, along with the weather warnings active at a location.

## Get Current Weather Forecast[​](#get-current-weather-forecast "Direct link to Get Current Weather Forecast")

Use the `getCurrent` method to retrieve the current weather forecast. Provide coordinates for the desired location, and the forecast will be returned through `onComplete`.

```dart
final locationCoordinates = Coordinates(
  latitude: 48.864716,
  longitude: 2.349014,
);
final weatherCurrentCompleter = Completer<List<LocationForecast>>();

WeatherService.getCurrent(
  coords: [locationCoordinates],
  onComplete: (err, result) async {
    weatherCurrentCompleter.complete(result);
  },
);

final currentForecast = await weatherCurrentCompleter.future;
showSnackbar("Forecast lenght list: ${currentForecast.length}");

```

danger

Verify that `LocationForecast` contains `Conditions` and each `Condition` includes a `Parameter`. If data is unavailable for the specified location and time, the API may return empty lists.

info

The result contains as many `LocationForecast` objects as coordinates provided to the `coords` parameter.

Each returned `LocationForecast` also carries the weather warnings active at that location in its `warnings` list. See [Warning](/docs/flutter/guides/weather/base-entities.md#warning) for the hazard fields and for how to order overlapping warnings.

```dart
for (final forecast in currentForecast) {
  for (final warning in forecast.warnings) {
    showSnackbar('${warning.name} - ${warning.severity} until ${warning.endStamp}');
  }
}

```

## Get Hourly Weather Forecast[​](#get-hourly-weather-forecast "Direct link to Get Hourly Weather Forecast")

Use the `getHourlyForecast` method to retrieve hourly weather forecasts. Specify the number of hours and coordinates for the desired location.

```dart
  final locationCoordinates = Coordinates(
    latitude: 48.864716,
    longitude: 2.349014,
  );

  final weatherHourlyCompleter = Completer<List<LocationForecast>>();

  WeatherService.getHourlyForecast(
    hours: 24,
    coords: [locationCoordinates],
    onComplete: (err, result) async {
      weatherHourlyCompleter.complete(result);
    },
  );

  final hourlyForecast = await weatherHourlyCompleter.future;
  showSnackbar("Forecast lenght list: ${hourlyForecast.length}");

```

danger

The number of requested hours must not exceed 240. Exceeding this limit results in an empty response and a `GemError.outOfRange` error.

## Get Daily Weather Forecast[​](#get-daily-weather-forecast "Direct link to Get Daily Weather Forecast")

Use the `getDailyForecast` method to retrieve daily weather forecasts. Specify the number of days and coordinates for the desired location.

```dart
  final locationCoordinates = Coordinates(
    latitude: 48.864716,
    longitude: 2.349014,
  );

  final weatherDailyCompleter = Completer<List<LocationForecast>>();

  WeatherService.getDailyForecast(
    days: 10,
    coords: [locationCoordinates],
    onComplete: (err, result) async {
      weatherDailyCompleter.complete(result);
    },
  );

  final dailyForecast = await weatherDailyCompleter.future;
  showSnackbar("Forecast lenght list: ${dailyForecast.length}");

```

danger

The number of requested days must not exceed 10. Exceeding this limit results in an empty response and a `GemError.outOfRange` error.

## Get Weather Forecast with Duration[​](#get-weather-forecast-with-duration "Direct link to Get Weather Forecast with Duration")

Use the `getForecast` method to retrieve weather forecasts for specific times and coordinates. Provide a list of `WeatherDurationCoordinates`, and `onComplete` returns as many `LocationForecast` objects as items in the list.

```dart
final weatherCompleter = Completer<List<LocationForecast>>();

WeatherService.getForecast(
  coords: [
    WeatherDurationCoordinates(
      coordinates: Coordinates(
        latitude: 48.864716,
        longitude: 2.349014,
      ),
      duration: Duration(days: 2),
    )
  ],
  onComplete: (err, result) async {
    weatherCompleter.complete(result);
  },
);
final forecast = await weatherCompleter.future;
showSnackbar("Forecast lenght list: ${forecast.length}");

```

info

The `duration` parameter in `WeatherDurationCoordinates` specifies the time offset into the future for the forecast.

Unlike the hourly and daily requests, `getForecast` also returns warnings. Each route point is evaluated against its own ETA: both the start and the end of the warning validity interval are applied against the time that point is reached.

## Request warning coverage polygons[​](#request-warning-coverage-polygons "Direct link to Request warning coverage polygons")

By default `Warning.coverage` is empty. Pass `coverageGeometry: CoverageGeometry.polygons` to `getCurrent` or `getForecast` to also receive the coverage polygons of each returned warning:

```dart
WeatherService.getCurrent(
  coords: [locationCoordinates],
  coverageGeometry: CoverageGeometry.polygons,
  onComplete: (err, result) async {
    weatherCurrentCompleter.complete(result);
  },
);

```

| Enum Case  | Description                                             |
| ---------- | ------------------------------------------------------- |
| `none`     | No coverage geometry. This is the default.              |
| `polygons` | Request the coverage polygons of the returned warnings. |

warning

Coverage geometry can be large, running to thousands of points per warning. Request it only when the polygons will actually be drawn.

info

The flag controls only the geometry. The warnings themselves are always returned by `getCurrent` and `getForecast`, with or without it.

See [Draw warning coverage](/docs/flutter/guides/weather/base-entities.md#draw-warning-coverage) for turning the returned polygons into map markers.

## Relevant example demonstrating weather related features[​](#relevant-example-demonstrating-weather-related-features "Direct link to Relevant example demonstrating weather related features")

* [Weather Forecast](/docs/flutter/examples/places-search/weather-forecast.md)
