NoSuchMethodError: The getter 'length' was called on null
所以目前我正在使用 Flutter 构建应用程序,这对我来说仍然是新的,我被那个标题中的那个例外困住了。
问题是,当我尝试在 ListView.builder 中调用"widget.usernames.length"时,如果它为 null,它将返回该异常,而当有数据时则没有异常。
我想要完成的是 get Length 函数应该返回 null 或 0 值,以便在没有数据时 ListView 不会显示任何内容。
1 2 3 4 5 6 7 8 9 10 | 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] ??""}"); } ), ); |
我已经试过了
1 | itemCount: widget.usernames.length ?? 0 |
但还是没有成功。
编辑**
感谢 Jeroen Heier,这段代码运行良好。
1 2 3 4 5 6 | var getUsernameLength = 0 ; if(widget.usernames == null){ return getUsernameLength; }else{ return widget.usernames.length; } |
如果你使用像 "widget.usernames.length" 这样的结构,编程代码可能会在两个地方失败:
- 当小部件 = null
- 当 widget.username = null (你的情况)
你不能在空对象上调用方法和属性;这就是您收到此错误的原因。因此,在您调用 widget.usernames.length 之前,您必须确保这两种情况都不会发生。这是如何完成的以及是否真的需要检查取决于程序的其余部分。一种检查方法是:
1 | return widget?.username?.length ?? 0; |
widget.usernames.length 似乎只是声明的。但未初始化或未分配任何值。所以它抛出了一个空错误。
您应该将值分配给 widget.usernames.length 作为
而且还可以检查 null
1 | itemCount: widget.usernames.length != null ? widget.usernames.length : 0; |