即使在使用toInt()之后,类型“int”也不是“double”flutter的子类型

xjreopfe  于 2023-01-27  发布在  Flutter
关注(0)|答案(4)|浏览(167)

在我的应用程序中,我通过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,但也不起作用。

lnvxswe2

lnvxswe21#

看到代码和错误,似乎错误实际上一定在这一行:

double temp = weatherData['main']['temp'];

这意味着它已经是一个整型了你不能把它赋值给这里的双精度型
你可以直接

temperature = weatherData['main']['temp'];
xxhby3vn

xxhby3vn2#

你能试着把temp设置成动态的吗

dynamic temperature;
t9aqgxwy

t9aqgxwy3#

通过将天气数据[“主”][“临时”]转换为双精度值-天气数据[“主”][“临时”].toDouble();解决了该问题。并且通过将温度声明为动态温度也解决了该问题。

9wbgstp7

9wbgstp74#

不要使用.toInt()
用途

temperature = int.parse(temp);

相关问题