added dewpoint_2m,precipitation_probability,shortwave_radiation

This commit is contained in:
Yoshi 2023-10-15 12:04:16 +03:00
parent 0306dbbc6c
commit 53a47b3f90
15 changed files with 1691 additions and 275 deletions

BIN
assets/images/dew.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -13,7 +13,7 @@ class WeatherAPI {
Future<MainWeatherCache> getWeatherData(double? lat, double? lon) async { Future<MainWeatherCache> getWeatherData(double? lat, double? lon) async {
String url = String url =
'latitude=$lat&longitude=$lon&hourly=temperature_2m,relativehumidity_2m,apparent_temperature,precipitation,rain,weathercode,surface_pressure,visibility,evapotranspiration,windspeed_10m,winddirection_10m,windgusts_10m,cloudcover,uv_index&daily=weathercode,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,sunset,precipitation_sum,precipitation_probability_max,windspeed_10m_max,windgusts_10m_max,uv_index_max,rain_sum,winddirection_10m_dominant&forecast_days=12&timezone=auto'; 'latitude=$lat&longitude=$lon&hourly=temperature_2m,relativehumidity_2m,apparent_temperature,precipitation,rain,weathercode,surface_pressure,visibility,evapotranspiration,windspeed_10m,winddirection_10m,windgusts_10m,cloudcover,uv_index,dewpoint_2m,precipitation_probability,shortwave_radiation&daily=weathercode,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,sunset,precipitation_sum,precipitation_probability_max,windspeed_10m_max,windgusts_10m_max,uv_index_max,rain_sum,winddirection_10m_dominant&forecast_days=12&timezone=auto';
String urlWeather; String urlWeather;
settings.measurements == 'imperial' && settings.degrees == 'fahrenheit' settings.measurements == 'imperial' && settings.degrees == 'fahrenheit'
? urlWeather = ? urlWeather =
@ -42,6 +42,9 @@ class WeatherAPI {
windgusts10M: weatherData.hourly.windgusts10M, windgusts10M: weatherData.hourly.windgusts10M,
cloudcover: weatherData.hourly.cloudcover, cloudcover: weatherData.hourly.cloudcover,
uvIndex: weatherData.hourly.uvIndex, uvIndex: weatherData.hourly.uvIndex,
dewpoint2M: weatherData.hourly.dewpoint2M,
precipitationProbability: weatherData.hourly.precipitationProbability,
shortwaveRadiation: weatherData.hourly.shortwaveRadiation,
timeDaily: weatherData.daily.time, timeDaily: weatherData.daily.time,
weathercodeDaily: weatherData.daily.weathercode, weathercodeDaily: weatherData.daily.weathercode,
temperature2MMax: weatherData.daily.temperature2MMax, temperature2MMax: weatherData.daily.temperature2MMax,
@ -72,7 +75,7 @@ class WeatherAPI {
Future<WeatherCard> getWeatherCard(double? lat, double? lon, String city, Future<WeatherCard> getWeatherCard(double? lat, double? lon, String city,
String district, String timezone) async { String district, String timezone) async {
String url = String url =
'latitude=$lat&longitude=$lon&hourly=temperature_2m,relativehumidity_2m,apparent_temperature,precipitation,rain,weathercode,surface_pressure,visibility,evapotranspiration,windspeed_10m,winddirection_10m,windgusts_10m,cloudcover,uv_index&daily=weathercode,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,sunset,precipitation_sum,precipitation_probability_max,windspeed_10m_max,windgusts_10m_max,uv_index_max,rain_sum,winddirection_10m_dominant&forecast_days=12&timezone=auto'; 'latitude=$lat&longitude=$lon&hourly=temperature_2m,relativehumidity_2m,apparent_temperature,precipitation,rain,weathercode,surface_pressure,visibility,evapotranspiration,windspeed_10m,winddirection_10m,windgusts_10m,cloudcover,uv_index,dewpoint_2m,precipitation_probability,shortwave_radiation&daily=weathercode,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,sunset,precipitation_sum,precipitation_probability_max,windspeed_10m_max,windgusts_10m_max,uv_index_max,rain_sum,winddirection_10m_dominant&forecast_days=12&timezone=auto';
String urlWeather; String urlWeather;
settings.measurements == 'imperial' && settings.degrees == 'fahrenheit' settings.measurements == 'imperial' && settings.degrees == 'fahrenheit'
? urlWeather = ? urlWeather =
@ -101,6 +104,9 @@ class WeatherAPI {
windgusts10M: weatherData.hourly.windgusts10M, windgusts10M: weatherData.hourly.windgusts10M,
cloudcover: weatherData.hourly.cloudcover, cloudcover: weatherData.hourly.cloudcover,
uvIndex: weatherData.hourly.uvIndex, uvIndex: weatherData.hourly.uvIndex,
dewpoint2M: weatherData.hourly.dewpoint2M,
precipitationProbability: weatherData.hourly.precipitationProbability,
shortwaveRadiation: weatherData.hourly.shortwaveRadiation,
timeDaily: weatherData.daily.time, timeDaily: weatherData.daily.time,
weathercodeDaily: weatherData.daily.weathercode, weathercodeDaily: weatherData.daily.weathercode,
temperature2MMax: weatherData.daily.temperature2MMax, temperature2MMax: weatherData.daily.temperature2MMax,

View file

@ -32,6 +32,9 @@ class Hourly {
List<double?>? windgusts10M; List<double?>? windgusts10M;
List<int?>? cloudcover; List<int?>? cloudcover;
List<double?>? uvIndex; List<double?>? uvIndex;
List<double?>? dewpoint2M;
List<int?>? precipitationProbability;
List<double?>? shortwaveRadiation;
Hourly({ Hourly({
this.time, this.time,
@ -49,6 +52,9 @@ class Hourly {
this.windgusts10M, this.windgusts10M,
this.cloudcover, this.cloudcover,
this.uvIndex, this.uvIndex,
this.dewpoint2M,
this.precipitationProbability,
this.shortwaveRadiation,
}); });
factory Hourly.fromJson(Map<String, dynamic> json) => Hourly( factory Hourly.fromJson(Map<String, dynamic> json) => Hourly(
@ -72,6 +78,11 @@ class Hourly {
windgusts10M: List<double?>.from(json['windgusts_10m'].map((x) => x)), windgusts10M: List<double?>.from(json['windgusts_10m'].map((x) => x)),
cloudcover: List<int?>.from(json['cloudcover'].map((x) => x)), cloudcover: List<int?>.from(json['cloudcover'].map((x) => x)),
uvIndex: List<double?>.from(json['uv_index'].map((x) => x)), uvIndex: List<double?>.from(json['uv_index'].map((x) => x)),
dewpoint2M: List<double?>.from(json['dewpoint_2m'].map((x) => x)),
precipitationProbability:
List<int?>.from(json['precipitation_probability'].map((x) => x)),
shortwaveRadiation:
List<double?>.from(json['shortwave_radiation'].map((x) => x)),
); );
} }

View file

@ -39,6 +39,9 @@ class MainWeatherCache {
List<double?>? windgusts10M; List<double?>? windgusts10M;
List<int?>? cloudcover; List<int?>? cloudcover;
List<double?>? uvIndex; List<double?>? uvIndex;
List<double?>? dewpoint2M;
List<int?>? precipitationProbability;
List<double?>? shortwaveRadiation;
List<DateTime>? timeDaily; List<DateTime>? timeDaily;
List<int?>? weathercodeDaily; List<int?>? weathercodeDaily;
List<double?>? temperature2MMax; List<double?>? temperature2MMax;
@ -73,6 +76,9 @@ class MainWeatherCache {
this.windgusts10M, this.windgusts10M,
this.cloudcover, this.cloudcover,
this.uvIndex, this.uvIndex,
this.dewpoint2M,
this.precipitationProbability,
this.shortwaveRadiation,
this.timeDaily, this.timeDaily,
this.weathercodeDaily, this.weathercodeDaily,
this.temperature2MMax, this.temperature2MMax,
@ -109,6 +115,9 @@ class MainWeatherCache {
'windgusts10M': windgusts10M, 'windgusts10M': windgusts10M,
'cloudcover': cloudcover, 'cloudcover': cloudcover,
'uvIndex': uvIndex, 'uvIndex': uvIndex,
'dewpoint2M': dewpoint2M,
'precipitationProbability': precipitationProbability,
'shortwaveRadiation': shortwaveRadiation,
'timeDaily': timeDaily, 'timeDaily': timeDaily,
'weathercodeDaily': weathercodeDaily, 'weathercodeDaily': weathercodeDaily,
'temperature2MMax': temperature2MMax, 'temperature2MMax': temperature2MMax,
@ -163,6 +172,9 @@ class WeatherCard {
List<double?>? windgusts10M; List<double?>? windgusts10M;
List<int?>? cloudcover; List<int?>? cloudcover;
List<double?>? uvIndex; List<double?>? uvIndex;
List<double?>? dewpoint2M;
List<int?>? precipitationProbability;
List<double?>? shortwaveRadiation;
List<DateTime>? timeDaily; List<DateTime>? timeDaily;
List<int?>? weathercodeDaily; List<int?>? weathercodeDaily;
List<double?>? temperature2MMax; List<double?>? temperature2MMax;
@ -202,6 +214,9 @@ class WeatherCard {
this.windgusts10M, this.windgusts10M,
this.cloudcover, this.cloudcover,
this.uvIndex, this.uvIndex,
this.dewpoint2M,
this.precipitationProbability,
this.shortwaveRadiation,
this.timeDaily, this.timeDaily,
this.weathercodeDaily, this.weathercodeDaily,
this.temperature2MMax, this.temperature2MMax,
@ -243,6 +258,9 @@ class WeatherCard {
'windgusts10M': windgusts10M, 'windgusts10M': windgusts10M,
'cloudcover': cloudcover, 'cloudcover': cloudcover,
'uvIndex': uvIndex, 'uvIndex': uvIndex,
'dewpoint2M': dewpoint2M,
'precipitationProbability': precipitationProbability,
'shortwaveRadiation': shortwaveRadiation,
'timeDaily': timeDaily, 'timeDaily': timeDaily,
'weathercodeDaily': weathercodeDaily, 'weathercodeDaily': weathercodeDaily,
'temperature2MMax': temperature2MMax, 'temperature2MMax': temperature2MMax,

File diff suppressed because it is too large Load diff

View file

@ -164,6 +164,10 @@ class _InfoWeatherCardState extends State<InfoWeatherCard> {
cloudcover: weatherCard.cloudcover?[timeNow], cloudcover: weatherCard.cloudcover?[timeNow],
windgusts: weatherCard.windgusts10M?[timeNow], windgusts: weatherCard.windgusts10M?[timeNow],
uvIndex: weatherCard.uvIndex?[timeNow], uvIndex: weatherCard.uvIndex?[timeNow],
dewpoint2M: weatherCard.dewpoint2M?[timeNow],
precipitationProbability:
weatherCard.precipitationProbability?[timeNow],
shortwaveRadiation: weatherCard.shortwaveRadiation?[timeNow],
), ),
WeatherDaily( WeatherDaily(
weatherData: weatherCard.toJson(), weatherData: weatherCard.toJson(),

View file

@ -151,6 +151,11 @@ class _WeatherPageState extends State<WeatherPage> {
cloudcover: mainWeather.cloudcover![hourOfDay], cloudcover: mainWeather.cloudcover![hourOfDay],
windgusts: mainWeather.windgusts10M![hourOfDay], windgusts: mainWeather.windgusts10M![hourOfDay],
uvIndex: mainWeather.uvIndex![hourOfDay], uvIndex: mainWeather.uvIndex![hourOfDay],
dewpoint2M: mainWeather.dewpoint2M![hourOfDay],
precipitationProbability:
mainWeather.precipitationProbability![hourOfDay],
shortwaveRadiation:
mainWeather.shortwaveRadiation![hourOfDay],
), ),
WeatherDaily( WeatherDaily(
weatherData: mainWeather.toJson(), weatherData: mainWeather.toJson(),

View file

@ -67,7 +67,8 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
highlightColor: Colors.transparent, highlightColor: Colors.transparent,
), ),
title: Text( title: Text(
DateFormat.MMMMEEEEd(locale.languageCode).format(timeDaily[pageIndex]), DateFormat.MMMMEEEEd(locale.languageCode)
.format(timeDaily[pageIndex]),
style: textTheme.titleMedium?.copyWith( style: textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 18, fontSize: 18,
@ -85,13 +86,17 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
itemCount: timeDaily.length, itemCount: timeDaily.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final indexedWeatherCodeDaily = weatherCodeDaily[index]; final indexedWeatherCodeDaily = weatherCodeDaily[index];
final apparentTemperatureMin = weatherData['apparentTemperatureMin'][index]; final apparentTemperatureMin =
final apparentTemperatureMax = weatherData['apparentTemperatureMax'][index]; weatherData['apparentTemperatureMin'][index];
final apparentTemperatureMax =
weatherData['apparentTemperatureMax'][index];
final uvIndexMax = weatherData['uvIndexMax'][index]; final uvIndexMax = weatherData['uvIndexMax'][index];
final windDirection10MDominant = weatherData['winddirection10MDominant'][index]; final windDirection10MDominant =
weatherData['winddirection10MDominant'][index];
final windSpeed10MMax = weatherData['windspeed10MMax'][index]; final windSpeed10MMax = weatherData['windspeed10MMax'][index];
final windGusts10MMax = weatherData['windgusts10MMax'][index]; final windGusts10MMax = weatherData['windgusts10MMax'][index];
final precipitationProbabilityMax = weatherData['precipitationProbabilityMax'][index]; final precipitationProbabilityMax =
weatherData['precipitationProbabilityMax'][index];
final rainSum = weatherData['rainSum'][index]; final rainSum = weatherData['rainSum'][index];
final precipitationSum = weatherData['precipitationSum'][index]; final precipitationSum = weatherData['precipitationSum'][index];
@ -131,7 +136,8 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
), ),
const SizedBox(height: 5), const SizedBox(height: 5),
Text( Text(
DateFormat.MMMMEEEEd(locale.languageCode).format(timeDaily[index]), DateFormat.MMMMEEEEd(locale.languageCode)
.format(timeDaily[index]),
style: textTheme.labelLarge?.copyWith( style: textTheme.labelLarge?.copyWith(
color: Colors.grey, color: Colors.grey,
fontSize: 16, fontSize: 16,
@ -158,14 +164,16 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/cold.png', imageName: 'assets/images/cold.png',
value: statusData.getDegree(apparentTemperatureMin.round()), value: statusData.getDegree(
apparentTemperatureMin.round()),
desc: 'apparentTemperatureMin'.tr, desc: 'apparentTemperatureMin'.tr,
), ),
apparentTemperatureMax == null apparentTemperatureMax == null
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/hot.png', imageName: 'assets/images/hot.png',
value: statusData.getDegree(apparentTemperatureMax.round()), value: statusData.getDegree(
apparentTemperatureMax.round()),
desc: 'apparentTemperatureMax'.tr, desc: 'apparentTemperatureMax'.tr,
), ),
uvIndexMax == null uvIndexMax == null
@ -174,7 +182,8 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
imageName: 'assets/images/uv.png', imageName: 'assets/images/uv.png',
value: '${uvIndexMax.round()}', value: '${uvIndexMax.round()}',
desc: 'uvIndex'.tr, desc: 'uvIndex'.tr,
message: message.getUvIndex(uvIndexMax.round()), message: message
.getUvIndex(uvIndexMax.round()),
), ),
windDirection10MDominant == null windDirection10MDominant == null
? const Offstage() ? const Offstage()
@ -182,26 +191,31 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
imageName: 'assets/images/windsock.png', imageName: 'assets/images/windsock.png',
value: '$windDirection10MDominant°', value: '$windDirection10MDominant°',
desc: 'direction'.tr, desc: 'direction'.tr,
message: message.getDirection(windDirection10MDominant), message: message.getDirection(
windDirection10MDominant),
), ),
windSpeed10MMax == null windSpeed10MMax == null
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/wind.png', imageName: 'assets/images/wind.png',
value: statusData.getSpeed(windSpeed10MMax.round()), value: statusData
.getSpeed(windSpeed10MMax.round()),
desc: 'wind'.tr, desc: 'wind'.tr,
), ),
windGusts10MMax == null windGusts10MMax == null
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/windgusts.png', imageName:
value: statusData.getSpeed(windGusts10MMax.round()), 'assets/images/windgusts.png',
value: statusData
.getSpeed(windGusts10MMax.round()),
desc: 'windgusts'.tr, desc: 'windgusts'.tr,
), ),
precipitationProbabilityMax == null precipitationProbabilityMax == null
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/humidity.png', imageName:
'assets/images/precipitation_probability.png',
value: '$precipitationProbabilityMax%', value: '$precipitationProbabilityMax%',
desc: 'precipitationProbabilit'.tr, desc: 'precipitationProbabilit'.tr,
), ),
@ -209,14 +223,16 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/water.png', imageName: 'assets/images/water.png',
value: statusData.getPrecipitation(rainSum), value: statusData
.getPrecipitation(rainSum),
desc: 'rain'.tr, desc: 'rain'.tr,
), ),
precipitationSum == null precipitationSum == null
? const Offstage() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/rainfall.png', imageName: 'assets/images/rainfall.png',
value: statusData.getPrecipitation(precipitationSum), value: statusData
.getPrecipitation(precipitationSum),
desc: 'precipitation'.tr, desc: 'precipitation'.tr,
), ),
], ],

View file

@ -19,6 +19,9 @@ class DescContainer extends StatefulWidget {
required this.cloudcover, required this.cloudcover,
required this.windgusts, required this.windgusts,
required this.uvIndex, required this.uvIndex,
required this.dewpoint2M,
required this.precipitationProbability,
required this.shortwaveRadiation,
}); });
final int? humidity; final int? humidity;
final double? wind; final double? wind;
@ -32,6 +35,9 @@ class DescContainer extends StatefulWidget {
final int? cloudcover; final int? cloudcover;
final double? windgusts; final double? windgusts;
final double? uvIndex; final double? uvIndex;
final double? dewpoint2M;
final int? precipitationProbability;
final double? shortwaveRadiation;
@override @override
State<DescContainer> createState() => _DescContainerState(); State<DescContainer> createState() => _DescContainerState();
@ -51,29 +57,29 @@ class _DescContainerState extends State<DescContainer> {
alignment: WrapAlignment.spaceEvenly, alignment: WrapAlignment.spaceEvenly,
spacing: 5, spacing: 5,
children: [ children: [
widget.humidity == null widget.dewpoint2M == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/humidity.png', imageName: 'assets/images/dew.png',
value: '${widget.humidity}%', value: statusData.getDegree(widget.dewpoint2M?.round()),
desc: 'humidity'.tr, desc: 'dewpoint'.tr,
), ),
widget.feels == null widget.feels == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/temperature.png', imageName: 'assets/images/temperature.png',
value: statusData.getDegree(widget.feels?.round()), value: statusData.getDegree(widget.feels?.round()),
desc: 'feels'.tr, desc: 'feels'.tr,
), ),
widget.visibility == null widget.visibility == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/fog.png', imageName: 'assets/images/fog.png',
value: statusData.getVisibility(widget.visibility), value: statusData.getVisibility(widget.visibility),
desc: 'visibility'.tr, desc: 'visibility'.tr,
), ),
widget.direction == null widget.direction == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/windsock.png', imageName: 'assets/images/windsock.png',
value: '${widget.direction}°', value: '${widget.direction}°',
@ -81,21 +87,21 @@ class _DescContainerState extends State<DescContainer> {
message: message.getDirection(widget.direction), message: message.getDirection(widget.direction),
), ),
widget.wind == null widget.wind == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/wind.png', imageName: 'assets/images/wind.png',
value: statusData.getSpeed(widget.wind?.round()), value: statusData.getSpeed(widget.wind?.round()),
desc: 'wind'.tr, desc: 'wind'.tr,
), ),
widget.windgusts == null widget.windgusts == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/windgusts.png', imageName: 'assets/images/windgusts.png',
value: statusData.getSpeed(widget.windgusts?.round()), value: statusData.getSpeed(widget.windgusts?.round()),
desc: 'windgusts'.tr, desc: 'windgusts'.tr,
), ),
widget.evaporation == null widget.evaporation == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/evaporation.png', imageName: 'assets/images/evaporation.png',
value: value:
@ -103,28 +109,42 @@ class _DescContainerState extends State<DescContainer> {
desc: 'evaporation'.tr, desc: 'evaporation'.tr,
), ),
widget.precipitation == null widget.precipitation == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/rainfall.png', imageName: 'assets/images/rainfall.png',
value: statusData.getPrecipitation(widget.precipitation), value: statusData.getPrecipitation(widget.precipitation),
desc: 'precipitation'.tr, desc: 'precipitation'.tr,
), ),
widget.rain == null widget.rain == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/water.png', imageName: 'assets/images/water.png',
value: statusData.getPrecipitation(widget.rain), value: statusData.getPrecipitation(widget.rain),
desc: 'rain'.tr, desc: 'rain'.tr,
), ),
widget.precipitationProbability == null
? const Offstage()
: DescWeather(
imageName: 'assets/images/precipitation_probability.png',
value: '${widget.precipitationProbability}%',
desc: 'precipitationProbabilit'.tr,
),
widget.humidity == null
? const Offstage()
: DescWeather(
imageName: 'assets/images/humidity.png',
value: '${widget.humidity}%',
desc: 'humidity'.tr,
),
widget.cloudcover == null widget.cloudcover == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/cloudy.png', imageName: 'assets/images/cloudy.png',
value: '${widget.cloudcover}%', value: '${widget.cloudcover}%',
desc: 'cloudcover'.tr, desc: 'cloudcover'.tr,
), ),
widget.pressure == null widget.pressure == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/atmospheric.png', imageName: 'assets/images/atmospheric.png',
value: '${widget.pressure?.round()} ${'hPa'.tr}', value: '${widget.pressure?.round()} ${'hPa'.tr}',
@ -132,13 +152,20 @@ class _DescContainerState extends State<DescContainer> {
message: message.getPressure(widget.pressure?.round()), message: message.getPressure(widget.pressure?.round()),
), ),
widget.uvIndex == null widget.uvIndex == null
? Container() ? const Offstage()
: DescWeather( : DescWeather(
imageName: 'assets/images/uv.png', imageName: 'assets/images/uv.png',
value: '${widget.uvIndex?.round()}', value: '${widget.uvIndex?.round()}',
desc: 'uvIndex'.tr, desc: 'uvIndex'.tr,
message: message.getUvIndex(widget.uvIndex?.round()), message: message.getUvIndex(widget.uvIndex?.round()),
), ),
widget.shortwaveRadiation == null
? const Offstage()
: DescWeather(
imageName: 'assets/images/shortwave_radiation.png',
value: '${widget.shortwaveRadiation?.round()} ${'W/m2'.tr}',
desc: 'shortwaveRadiation'.tr,
),
], ],
), ),
), ),

View file

@ -115,6 +115,9 @@ class Translation extends Translations {
'widget': 'Виджет', 'widget': 'Виджет',
'widgetBackground': 'Фон виджета', 'widgetBackground': 'Фон виджета',
'widgetText': 'Текст виджета', 'widgetText': 'Текст виджета',
'dewpoint': 'Точка росы',
'shortwaveRadiation': 'Коротковолновое излучение',
'W/m2': 'Вт/м2',
}, },
'en_US': { 'en_US': {
'start': 'Get Started', 'start': 'Get Started',
@ -228,6 +231,9 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Widget background', 'widgetBackground': 'Widget background',
'widgetText': 'Widget text', 'widgetText': 'Widget text',
'dewpoint': 'Dewpoint',
'shortwaveRadiation': 'Shortwave radiation',
'W/m2': 'W/m2',
}, },
'fr_FR': { 'fr_FR': {
'start': 'Démarrer', 'start': 'Démarrer',
@ -342,6 +348,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Fond du widget', 'widgetBackground': 'Fond du widget',
'widgetText': 'Texte du widget', 'widgetText': 'Texte du widget',
'dewpoint': 'Point de rosée',
'shortwaveRadiation': 'Rayonnement à ondes courtes',
}, },
'it_IT': { 'it_IT': {
'start': 'Clicca per iniziare', 'start': 'Clicca per iniziare',
@ -456,6 +464,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Sfondo del widget', 'widgetBackground': 'Sfondo del widget',
'widgetText': 'Testo del widget', 'widgetText': 'Testo del widget',
'dewpoint': 'Punto di rugiada',
'shortwaveRadiation': 'Radiazione a onde corte',
}, },
'de_DE': { 'de_DE': {
'start': 'Los gehts', 'start': 'Los gehts',
@ -570,6 +580,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Widget-Hintergrund', 'widgetBackground': 'Widget-Hintergrund',
'widgetText': 'Widget-Text', 'widgetText': 'Widget-Text',
'dewpoint': 'Taupunkt',
'shortwaveRadiation': 'Kurzwellenstrahlung',
}, },
'tr_TR': { 'tr_TR': {
'start': 'Başlat', 'start': 'Başlat',
@ -683,6 +695,8 @@ class Translation extends Translations {
'widget': 'Araç', 'widget': 'Araç',
'widgetBackground': 'Araç Arka Planı', 'widgetBackground': 'Araç Arka Planı',
'widgetText': 'Araç metni', 'widgetText': 'Araç metni',
'dewpoint': 'Çiğ noktası',
'shortwaveRadiation': 'Kısa dalga radyasyonu',
}, },
'pt_BR': { 'pt_BR': {
'start': 'Iniciar', 'start': 'Iniciar',
@ -796,6 +810,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Fundo do widget', 'widgetBackground': 'Fundo do widget',
'widgetText': 'Texto do widget', 'widgetText': 'Texto do widget',
'dewpoint': 'Ponto de orvalho',
'shortwaveRadiation': 'Radiação de ondas curtas',
}, },
'es_ES': { 'es_ES': {
'start': 'Empezar', 'start': 'Empezar',
@ -814,7 +830,7 @@ class Translation extends Translations {
'direction': 'Dirección', 'direction': 'Dirección',
'pressure': 'Presión', 'pressure': 'Presión',
'rain': 'Lluvia', 'rain': 'Lluvia',
'clear_sky': 'Soleado', 'clear_sky': 'Cielo despejado',
'cloudy': 'Nuboso', 'cloudy': 'Nuboso',
'overcast': 'Cubierto de nubes', 'overcast': 'Cubierto de nubes',
'fog': 'Niebla', 'fog': 'Niebla',
@ -910,6 +926,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Fondo del widget', 'widgetBackground': 'Fondo del widget',
'widgetText': 'Texto del widget', 'widgetText': 'Texto del widget',
'dewpoint': 'Punto de rocío',
'shortwaveRadiation': 'Radiación de onda corta',
}, },
'sk_SK': { 'sk_SK': {
'start': 'Začať', 'start': 'Začať',
@ -1023,6 +1041,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Pozadie widgetu', 'widgetBackground': 'Pozadie widgetu',
'widgetText': 'Text widgetu', 'widgetText': 'Text widgetu',
'dewpoint': 'Rosný bod',
'shortwaveRadiation': 'Krátka vlnová radiácia',
}, },
'nl_NL': { 'nl_NL': {
'start': 'Beginnen', 'start': 'Beginnen',
@ -1137,6 +1157,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Widget-achtergrond', 'widgetBackground': 'Widget-achtergrond',
'widgetText': 'Tekst van widget', 'widgetText': 'Tekst van widget',
'dewpoint': 'Dauwpunt',
'shortwaveRadiation': 'Korte golfstraling',
}, },
'hi_IN': { 'hi_IN': {
'start': 'शुरू करें', 'start': 'शुरू करें',
@ -1248,6 +1270,8 @@ class Translation extends Translations {
'widget': 'विजेट', 'widget': 'विजेट',
'widgetBackground': 'विजेट का पृष्ठभूमि', 'widgetBackground': 'विजेट का पृष्ठभूमि',
'widgetText': 'विजेट पाठ', 'widgetText': 'विजेट पाठ',
'dewpoint': 'बर्फ़ के बिंदु',
'shortwaveRadiation': 'शॉर्टवेव विकिरण',
}, },
'ro_RO': { 'ro_RO': {
'start': 'Începe', 'start': 'Începe',
@ -1360,6 +1384,8 @@ class Translation extends Translations {
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Fundal widget', 'widgetBackground': 'Fundal widget',
'widgetText': 'Text widget', 'widgetText': 'Text widget',
'dewpoint': 'Punct de rouă',
'shortwaveRadiation': 'Radiație cu unde scurte',
}, },
'zh_CN': { 'zh_CN': {
'start': '开始', 'start': '开始',
@ -1470,6 +1496,8 @@ class Translation extends Translations {
'widget': '小部件', 'widget': '小部件',
'widgetBackground': '小部件背景', 'widgetBackground': '小部件背景',
'widgetText': '小部件文本', 'widgetText': '小部件文本',
'dewpoint': '露点',
'shortwaveRadiation': '短波辐射',
}, },
'pl_PL': { 'pl_PL': {
'start': 'Rozpocznij', 'start': 'Rozpocznij',
@ -1581,7 +1609,9 @@ class Translation extends Translations {
'license': 'Licencje', 'license': 'Licencje',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Tło widżetu', 'widgetBackground': 'Tło widżetu',
'widgetText': 'Tekst widżetu' 'widgetText': 'Tekst widżetu',
'dewpoint': 'Punkt rosy',
'shortwaveRadiation': 'Promieniowanie krótkofalowe',
}, },
}; };
} }

View file

@ -22,7 +22,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FlutterTimezonePlugin.register(with: registry.registrar(forPlugin: "FlutterTimezonePlugin")) FlutterTimezonePlugin.register(with: registry.registrar(forPlugin: "FlutterTimezonePlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin")) IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
} }

View file

@ -165,10 +165,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: connectivity_plus name: connectivity_plus
sha256: "94d51c6f1299133a2baa4c5c3d2c11ec7d7fb4768dee5c52a56f7d7522fcf70e" sha256: b502a681ba415272ecc41400bd04fe543ed1a62632137dc84d25a91e7746f55f
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.0" version: "5.0.1"
connectivity_plus_platform_interface: connectivity_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -364,10 +364,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_timezone name: flutter_timezone
sha256: "4508018aba499c837f723e2e718259eb677410490638b7ea669b11113d083e68" sha256: "06b35132c98fa188db3c4b654b7e1af7ccd01dfe12a004d58be423357605fb24"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.7" version: "1.0.8"
flutter_web_plugins: flutter_web_plugins:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -681,10 +681,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: package_info_plus name: package_info_plus
sha256: "6ff267fcd9d48cb61c8df74a82680e8b82e940231bb5f68356672fde0397334a" sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.0" version: "4.2.0"
package_info_plus_platform_interface: package_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:

View file

@ -30,9 +30,9 @@ dependencies:
url_launcher: ^6.1.14 url_launcher: ^6.1.14
dynamic_color: ^1.6.7 dynamic_color: ^1.6.7
path_provider: ^2.1.1 path_provider: ^2.1.1
flutter_timezone: ^1.0.7 flutter_timezone: ^1.0.8
package_info_plus: ^4.1.0 package_info_plus: ^4.2.0
connectivity_plus: ^5.0.0 connectivity_plus: ^5.0.1
isar_flutter_libs: ^3.1.0+1 isar_flutter_libs: ^3.1.0+1
flutter_displaymode: ^0.6.0 flutter_displaymode: ^0.6.0
lat_lng_to_timezone: ^0.2.0 lat_lng_to_timezone: ^0.2.0