NoSuchMethodError:在null上调用了getter'length'

时间:2018-06-24 09:16:39

标签: dart flutter

因此,目前我正在使用Flutter构建应用程序,这对我来说仍然是新手,而我在该标题中一直停留在那些例外情况上。

问题是,当我尝试在ListView.builder上调用“ widget.usernames.length”时,如果它为null,则它将返回那些异常,并且在有数据时也将没有异常。

我要完成的工作是get Length函数应返回null或0值,以便ListView在没有数据时不显示任何内容。

return new Expanded(
  child: ListView.builder(
      padding: new EdgeInsets.all(8.0),
      itemExtent: 20.0,
      itemCount: widget.usernames.length,
      itemBuilder: (BuildContext context, int index){
        return Text("Bank ${widget.usernames[index] ?? " "}");
      }
  ),
);

我已经尝试过

itemCount: widget.usernames.length ?? 0

但仍然没有成功。

编辑**

感谢Jeroen Heier,这段代码很好用。

var getUsernameLength = 0 ;
if(widget.usernames == null){
  return getUsernameLength;
}else{
  return widget.usernames.length;
}

2 个答案:

答案 0 :(得分:4)

如果您使用“ widget.usernames.length”之类的构造,则编程代码可能会在两个地方失败:

  • 小部件= null时
  • widget.username = null(您的情况)

您不能在空对象上调用方法和属性;这就是为什么您会收到此错误。因此,在调用widget.usernames.length之前,必须确保两种情况均不会发生。如何完成以及是否确实需要检查取决于程序的其余部分。一种检查方法是:

  return widget?.username?.length ?? 0;

答案 1 :(得分:0)

widget.usernames.length 似乎只是声明。但未初始化或未赋值。所以它抛出一个空错误。

您应该将值分配给 widget.usernames.length 作为 List<int> widget.usernames.length = [1,4,5,7]; 或根据要求从父级传递数据。

也可以检查空

  itemCount: widget.usernames.length != null ? widget.usernames.length : 0;
相关问题