Rain/lib/app/api/weather.dart

76 lines
2.9 KiB
Dart
Raw Normal View History

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