Я пытаюсь получить данные о погоде из сети и показать только пять индексов API 5days / 3hours на openweathermap. Он отлично работает, когда я впервые запускаю приложение, но затем, когда я нажимаю кнопку «Иконка» и снова вызываю updateUI, он дает мне все данные вместо пяти. Вот мой код:
List<String timeStringData = [];
List<String> hourlyTemp =[];
void updateUI(dynamic weatherData, dynamic hourlyData) {
setState(() {
temperature = weatherData['main']['temp'].toInt();
description = weatherData['weather'][0]['description'];
cityName = weatherData['name'];
for (int i = 1; i < 6; i++) {
timeStringData.add(hourlyData['list'][i]['dt_txt']);
hourlyTemp.add(hourlyData['list'][i]['main']['temp']);
parsing();
}
});
}
Row parsing() {
List<HourInfo> hourTexts = [];
for (int i = 0; i <= timeStringData.length - 1; i++) {
var parsedDate = DateTime.parse(timeStringData[i]);
String formatted = formatting(parsedDate);
String onlyTemp = hourlyTemp[i].toStringAsFixed(0);
setState(() {
hourTexts.add(
HourInfo(
onlyHour: formatted,
onlyTemp: onlyTemp,
),
);
});
}
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: hourTexts,
);
}
метод сборки:
IconButton(
icon: Icon(
Icons.near_me,
color: Colors.white,
size: 35.0,
),
onPressed: () async {
var weatherData = await weather.getLocationWeather();
var hourlyData = await weather.get3HoursWeather();
updateUI(weatherData, hourlyData);
},
),
Container(
width: double.infinity,
height: 100.0,
child: parsing(),
),