HourlyWeatherData.fromJson constructor

HourlyWeatherData.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory HourlyWeatherData.fromJson(Map<String, dynamic> json) {
  final hourly = json['hourly'] as Map<String, dynamic>;
  final times = (hourly['time'] as List).cast<String>();
  final temperatures = (hourly['temperature_2m'] as List).cast<num>();
  final humidities = hourly.containsKey('relative_humidity_2m')
      ? (hourly['relative_humidity_2m'] as List).cast<num?>()
      : null;
  final windSpeeds = hourly.containsKey('wind_speed_10m')
      ? (hourly['wind_speed_10m'] as List).cast<num?>()
      : null;
  final precipitations = hourly.containsKey('precipitation')
      ? (hourly['precipitation'] as List).cast<num?>()
      : null;

  final data = <HourlyWeatherPoint>[];
  for (var i = 0; i < times.length; i++) {
    data.add(
      HourlyWeatherPoint(
        time: DateTime.parse(times[i]),
        temperature: temperatures[i].toDouble(),
        humidity: humidities?[i]?.toInt(),
        windSpeed: windSpeeds?[i]?.toDouble(),
        precipitation: precipitations?[i]?.toDouble(),
      ),
    );
  }

  return HourlyWeatherData(
    data: data,
    startDate: data.first.time,
    endDate: data.last.time,
  );
}