在我的应用程序中,我通过temp.toInt()将一个double temp转换为一个late int温度变量。但不知何故,我的应用程序崩溃了,并显示错误消息“type 'int'不是'double'的子类型”。主要问题是它突然工作。然后又崩溃了。我不知道为什么会发生这种情况。以下是我的代码-
class _LocationScreenState extends State<LocationScreen> {
WeatherModel weather = WeatherModel();
late int temperature;
late String cityName;
late String weatherIcon;
late String weatherMessage;
@override
void initState() {
super.initState();
updateUI(widget.locationWeather);
}
void updateUI(dynamic weatherData) {
setState(() {
if (weatherData == null) {
temperature = 0;
weatherIcon = 'Error';
weatherMessage = 'Unable to get weather data';
cityName = '';
return;
}
double temp = weatherData['main']['temp'];
temperature = temp.toInt();
var condition = weatherData['weather'][0]['id'];
weatherIcon = weather.getWeatherIcon(condition);
weatherMessage = weather.getMessage(temperature);
cityName = weatherData['name'];
});
}
我该怎么办?2如果你有什么建议请告诉我。3先谢了。
我试过声明另一个int变量并将其赋值给temperature,但也不起作用。
4条答案
按热度按时间lnvxswe21#
看到代码和错误,似乎错误实际上一定在这一行:
这意味着它已经是一个整型了你不能把它赋值给这里的双精度型
你可以直接
xxhby3vn2#
你能试着把temp设置成动态的吗
t9aqgxwy3#
通过将天气数据[“主”][“临时”]转换为双精度值-天气数据[“主”][“临时”].toDouble();解决了该问题。并且通过将温度声明为动态温度也解决了该问题。
9wbgstp74#
不要使用.toInt()
用途