OneCallCurrentWeather.fromJson constructor

OneCallCurrentWeather.fromJson(
  1. Map<String, dynamic> json,
  2. UnitSettings settings
)

JSON deserialization constructor

Implementation

factory OneCallCurrentWeather.fromJson(
  Map<String, dynamic> json,
  UnitSettings settings,
) {
  // Mapping the iconId and ID to a WeatherType enum
  WeatherType weatherType = infoToWeatherType(
    id: json['weather'][0]['id'],
    iconId: json['weather'][0]['icon'],
  );

  // Formatting temperature
  num? temp = temperatureToSelectedUnit(
    temp: json['temp'],
    unit: settings.temperatureUnit,
  );

  // Formatting feels like temperature
  num? feelsLikeTemp = temperatureToSelectedUnit(
    temp: json['feels_like'],
    unit: settings.temperatureUnit,
  );

  // Formatting dew point temperature
  num? dewPointTemp = temperatureToSelectedUnit(
    temp: json['dew_point'],
    unit: settings.temperatureUnit,
  );

  // Formatting the visibility
  num? visibility = distanceToSelectedUnit(
    distance: json['visibility'],
    unit: settings.distanceUnit,
  );

  // Formatting the pressure
  num pressure = pressureToSelectedUnit(
    pressure: json['pressure'],
    unit: settings.pressureUnit,
  );

  // Formatting the wind speed
  num? windSpeed = windSpeedToSelectedUnit(
    windSpeed: json['wind_speed'],
    unit: settings.windSpeedUnit,
  );

  // Formatting the gust speed
  num? windGustSpeed = windSpeedToSelectedUnit(
    windSpeed: json['wind_gust'],
    unit: settings.windSpeedUnit,
  );

  // Formatting the amount of rain
  num? rainAmountLast1h = precipitationToSelectedUnit(
    amount: json['rain']['1h'],
    unit: settings.precipitationUnit,
  );
  // Formatting the amount of snow
  num? snowAmountLast1h = precipitationToSelectedUnit(
    amount: json['snow']['1h'],
    unit: settings.precipitationUnit,
  );

  return OneCallCurrentWeather(
    weatherID: json['weather'][0]['id'],
    iconID: json['weather'][0]['icon'],
    weatherType: weatherType,
    mainDescription: json['weather'][0]['main'],
    secondaryDescription: json['weather'][0]['description'],
    temp: temp,
    feelsLikeTemp: feelsLikeTemp,
    dewPointTemp: dewPointTemp,
    humidity: json['humidity'],
    cloudiness: json['clouds'],
    uvi: json['uvi'],
    visibility: visibility,
    pressure: pressure,
    windSpeed: windSpeed,
    windDegree: json['wind_deg'],
    windGustSpeed: windGustSpeed,
    rainAmountLast1h: rainAmountLast1h,
    snowAmountLast1h: snowAmountLast1h,
    sunrise: DateTime.fromMillisecondsSinceEpoch(
      (json['sunrise']) * 1000,
      isUtc: true,
    ),
    sunset: DateTime.fromMillisecondsSinceEpoch(
      (json['sunset']) * 1000,
      isUtc: true,
    ),
    timeStamp: DateTime.fromMillisecondsSinceEpoch(
      (json['dt']) * 1000,
      isUtc: true,
    ),
  );
}