在flutter中加载api时遇到类型转换错误 [英] Getting typecasting error while api loading in flutter

查看:487
本文介绍了在flutter中加载api时遇到类型转换错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我创建一个应用程序时,所有COVID数据将通过API根据其区域进行排列,并且该API位于MAP< String,String>中。形成。但是我可能正在收到类型转换错误。
API URL = https://api.rootnet.in/covid19-in / stats / latest

As I was creating an app in which all the COVID data will be arranged according to their zones through the API and the API is in the MAP<String, String> form. But I am getting probably the typecasting error. API URL = https://api.rootnet.in/covid19-in/stats/latest

List<String> redZoneData;
  List<String> orangeZoneData;
  List<String> greenZoneData;
  int n = 2;
  Map mapData;
  var totalConfirmed;
  var dataCalc;
  var death;
  var stateCode;
  mapDataValue() async {
    final url = 'https://api.rootnet.in/covid19-in/stats/latest';
    final response = await http.get(url);
    mapData = json.decode(response.body);
    if (response.statusCode == 200) {
      setState(() {
        for (int index = 0;
            index < mapData['data']['regional'].length;
            index++) {
          totalConfirmed = mapData['data']['regional'][index]['totalConfirmed'];
          death = mapData['data']['regional'][index]['deaths'];
          dataCalc = double.parse((totalConfirmed / death).toStringAsFixed(2));
          stateCode = mapData['data']['regional'][index]['loc'];
          if (dataCalc <= 40.00) {
            redZoneData.add(stateCode);
          } else {
            if (dataCalc > 40.00 && dataCalc <= 50.00) {
              orangeZoneData.add(stateCode);
            } else {
              greenZoneData.add(stateCode);
            }
          }
        }
        // print(redZoneData);
        // print(orangeZoneData);
        // print(greenZoneData);
      });
    } else {
      throw Exception('loading failed...');
    }
  }

  @override
  void initState() {
    mapDataValue();
    super.initState();
  }

错误:

E/flutter (17875): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method 'add' was called on null.
E/flutter (17875): Receiver: null
E/flutter (17875): Tried calling: add("Andaman and Nicobar Islands")
E/flutter (17875): #0      Object.noSuchMethod  (dart:core-patch/object_patch.dart:51:5)
E/flutter (17875): #1      _MapIntegrationState.mapDataValue.<anonymous closure> 
package:CovidTracker/MapIntegration.dart:42
E/flutter (17875): #2      State.setState 
package:flutter/…/widgets/framework.dart:1240
E/flutter (17875): #3      _MapIntegrationState.mapDataValue 
package:CovidTracker/MapIntegration.dart:28
E/flutter (17875): <asynchronous suspension>
E/flutter (17875): #4      _MapIntegrationState.initState 
package:CovidTracker/MapIntegration.dart:57
E/flutter (17875): #5      StatefulElement._firstBuild 
package:flutter/…/widgets/framework.dart:4684
E/flutter (17875): #6      ComponentElement.mount 
package:flutter/…/widgets/framework.dart:4520
E/flutter (17875): #7      Element.inflateWidget 
package:flutter/…/widgets/framework.dart:3490
E/flutter (17875): #8      MultiChildRenderObjectElement.mount 
package:flutter/…/widgets/framework.dart:5991
E/flutter (17875): #9      Element.inflateWidget 
package:flutter/…/widgets/framework.dart:3490
E/flutter (17875): #10     Element.updateChild 
package:flutter/…/widgets/framework.dart:3258
E/flutter (17875): #11     SingleChildRenderObjectElement.mount 
package:flutter/…/widgets/framework.dart:5874
E/flutter (17875): #12     Element.inflateWidget 

你能帮我解决这个问题吗s,好吗?由于我是新手,所以才出现这些错误。请帮助我克服这个问题。
谢谢:}

Can you help me to solve this, please? As I am a newbie that's why I am getting these errors. Please help me to overcome this. Thank You:}

推荐答案

我刚刚解决了这个问题

  List redZoneData = new List();
  List orangeZoneData = new List();
  List greenZoneData = new List();
  int n = 2;
  Map mapData;
  var totalConfirmed;
  var dataCalc;
  var death;
  var stateCode;
  mapDataValue() async {
    final url = 'https://api.rootnet.in/covid19-in/stats/latest';
    final response = await http.get(url);
    mapData = json.decode(response.body);
    if (response.statusCode == 200) {
      setState(() {
        for (int index = 0;
            index < mapData['data']['regional'].length;
            index++) {
          totalConfirmed = mapData['data']['regional'][index]['totalConfirmed'];
          death = mapData['data']['regional'][index]['deaths'];
          dataCalc = double.parse((totalConfirmed / death).toStringAsFixed(2));
          stateCode = mapData['data']['regional'][index]['loc'];
          if (dataCalc <= 40.00) {
            redZoneData.add(stateCode);
          } else {
            if (dataCalc > 40.00 && dataCalc <= 50.00) {
              orangeZoneData.add(stateCode);
            } else {
              greenZoneData.add(stateCode);
            }
          }
        }
        // print(redZoneData);
        // print(orangeZoneData);
        // print(greenZoneData);
      });
    } else {
      throw Exception('loading failed...');
    }
  }

  @override
  void initState() {
    mapDataValue();
    super.initState();
  }

删除列表的类型并使其动态。这一定会有所帮助。
简单

Remove the type of the list and make it dynamic. It will help surely. Just Simple

这篇关于在flutter中加载api时遇到类型转换错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆