如何解决在 null 上调用了方法“[]”。在颤动中[重复]
Posted
技术标签:
【中文标题】如何解决在 null 上调用了方法“[]”。在颤动中[重复]【英文标题】:How can I solve The method '[]' was called on null. in flutter [duplicate] 【发布时间】:2021-01-30 23:03:59 【问题描述】:在将 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),
),
);
,
);
,
),
),
),
);
请帮助我,我是 Flutter 的新手 谢谢
【问题讨论】:
请提供更多信息、完整错误、json文件等... 好的,我会尽快编辑问题 【参考方案1】:当您尝试使用键从映射或使用索引从列表访问任何值但您的映射/列表为 null
时,会发生此错误。
在你的情况下这一行:
mydata["saarthiService"]['applyOnline']["0"]
很可能是导致错误的原因。确保:
mydata
不为空
mydata["saarthiService"]
不为空
mydata["saarthiService"]['applyOnline']
不为空
我会建议您通过打印到控制台来检查您的数据并验证它不为空。
【讨论】:
【参考方案2】:错误来自这一行
mydata["saarthiService"]['applyOnline']["0"]
嵌套地图中的一些地图为空
要消除错误,只需使用 null 运算符并为其提供一个空映射。
((mydata["saarthiService"]?? )['applyOnline'] ?? )["0"] ?? "
?? operator 检查 map 是否为 null 如果 map 为 null 然后我们创建一个空 map 并且将从这里访问下一个键
只要使用它,你的错误就会得到解决
【讨论】:
这完全不正确。这仍然会导致错误。 你检查了吗。它对我有用 你不知道 OP 的数据。这是不可能测试的,所以我非常怀疑你是否知道它确实有效。根据我对错误的了解,这不会解决它。请查看链接的副本。 根据我的经验,它一直对我有用。只需检查并告诉我 为什么会这样?错误是这一行mydata["saarthiService"]['applyOnline']["0"]
的结果。简单地运行这行代码将导致错误。您的代码在运行这行代码之后添加了一个空检查。因此,错误仍然会发生,并且会在它到达您添加的代码之前发生。以上是关于如何解决在 null 上调用了方法“[]”。在颤动中[重复]的主要内容,如果未能解决你的问题,请参考以下文章
发布 http 请求:在 null 颤动上调用了 getter 'length'
Flutter NoSuchMethodError:在 null 上调用了方法“[]”。使用flutter获取api时如何解决此错误