如何解决在 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时如何解决此错误

调用 api 的未来方法有时返回 null 有时不返回

在颤动中从小部件调用状态类