我该如何解决方法'[]'在null上被调用。扑朔迷离

时间:2020-10-16 12:06:11

标签: json flutter null

在将JSON数据用于文本wigdet中后,出现此错误。 我的json存储在本地

assets / json / data.json

我正在使用ListView.builder构建Listview

我的代码

 Widget build(BuildContext context) {
  return Scaffold(
    backgroundColor: Color(0xff655ee6),
    appBar: AppBar(
      backgroundColor: Color(0xff655ee6),
      title: Text("Apply Online"),
    ),
    body: SingleChildScrollView(
      child: SizedBox(
        height: MediaQuery.of(context).size.height,
        child: FutureBuilder(
          future: DefaultAssetBundle.of(context).loadString("assets/json/example.json"),
          builder: (context,snapshot){
            var mydata = json.decode(snapshot.data.toString());
            if(mydata == null){
              return Center(
                child: CircularProgressIndicator(
                ),
              );
            }
            else {return ListView.builder(
              itemCount: 30,
              itemBuilder: (context, index){
                return Card(
                  child: ListTile(
                    title: Text(mydata["saarthiService"]['applyOnline']["0"]),
                    leading: Icon(Icons.import_contacts),

                  ),
                );
              },
            );}
          },
        ),
      ),
    ),
    );
 }
} 

请帮助我,我是新手 谢谢

2 个答案:

答案 0 :(得分:2)

当您尝试使用键从地图中访问任何值或使用索引从列表中访问任何值但您的地图/列表为null时,会发生此错误。
在您的情况下,此行:

mydata["saarthiService"]['applyOnline']["0"]

最有可能导致错误。确保:

  • mydata不为空
  • mydata["saarthiService"]不为空
  • mydata["saarthiService"]['applyOnline']不为空

我建议您通过打印到控制台来检查数据,并确认其不为空。

答案 1 :(得分:0)

错误来自此行

mydata["saarthiService"]['applyOnline']["0"]

嵌套Map中的某些地图为空

要消除该错误,只需使用null运算符并为其提供一个空映射。

 ((mydata["saarthiService"]?? {})['applyOnline'] ?? {})["0"] ?? " 

的?操作员检查该地图是否为空,如果该地图为空,则我们创建一个空地图,然后将从此访问下一个键

只要使用此选项,您的错误就会得到解决