import 'package:freezed_annotation/freezed_annotation.dart'; //ignore_for_file: invalid_annotation_target part 'weather_api.freezed.dart'; part 'weather_api.g.dart'; @freezed class WeatherDataApi with _$WeatherDataApi { const factory WeatherDataApi({ required Hourly hourly, required Daily daily, required String timezone, }) = _WeatherDataApi; factory WeatherDataApi.fromJson(Map json) => _$WeatherDataApiFromJson(json); } @freezed class Hourly with _$Hourly { const factory Hourly({ List? time, @JsonKey(name: 'weathercode') List? weatherCode, @JsonKey(name: 'temperature_2m') List? temperature2M, @JsonKey(name: 'apparent_temperature') List? apparentTemperature, List? precipitation, List? rain, @JsonKey(name: 'relativehumidity_2m') List? relativeHumidity2M, @JsonKey(name: 'surface_pressure') List? surfacePressure, List? visibility, List? evapotranspiration, @JsonKey(name: 'windspeed_10m') List? windSpeed10M, @JsonKey(name: 'winddirection_10m') List? windDirection10M, @JsonKey(name: 'windgusts_10m') List? windGusts10M, @JsonKey(name: 'cloudcover') List? cloudCover, @JsonKey(name: 'uv_index') List? uvIndex, @JsonKey(name: 'dewpoint_2m') List? dewpoint2M, @JsonKey(name: 'precipitation_probability') List? precipitationProbability, @JsonKey(name: 'shortwave_radiation') List? shortwaveRadiation, }) = _Hourly; factory Hourly.fromJson(Map json) => _$HourlyFromJson(json); } List _dateTimeFromJson(List? json) => json?.map((x) => DateTime.parse(x)).toList() ?? []; @freezed class Daily with _$Daily { const factory Daily({ @JsonKey(fromJson: _dateTimeFromJson) List? time, @JsonKey(name: 'weathercode') List? weatherCode, @JsonKey(name: 'temperature_2m_max') List? temperature2MMax, @JsonKey(name: 'temperature_2m_min') List? temperature2MMin, @JsonKey(name: 'apparent_temperature_max') List? apparentTemperatureMax, @JsonKey(name: 'apparent_temperature_min') List? apparentTemperatureMin, @JsonKey(name: 'precipitation_sum') List? precipitationSum, List? sunrise, List? sunset, @JsonKey(name: 'precipitation_probability_max') List? precipitationProbabilityMax, @JsonKey(name: 'windspeed_10m_max') List? windSpeed10MMax, @JsonKey(name: 'windgusts_10m_max') List? windGusts10MMax, @JsonKey(name: 'uv_index_max') List? uvIndexMax, @JsonKey(name: 'rain_sum') List? rainSum, @JsonKey(name: 'winddirection_10m_dominant') List? windDirection10MDominant, }) = _Daily; factory Daily.fromJson(Map json) => _$DailyFromJson(json); }