在将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),
),
);
},
);}
},
),
),
),
);
}
}
请帮助我,我是新手 谢谢
答案 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"] ?? "
的?操作员检查该地图是否为空,如果该地图为空,则我们创建一个空地图,然后将从此访问下一个键
只要使用此选项,您的错误就会得到解决