NoSuchMethodError: The getter 'length' was called on null
NoSuchMethodError: The getter 'length' was called on null
所以目前我正在使用 Flutter 构建应用程序,这对我来说仍然是新的,我被困在那个标题中的那个例外。
问题是当我试图在 ListView.builder 调用“widget.usernames.length”时,它会 return 如果它为空并且有数据时没有异常。
我想要完成的是 get Length 函数应该 return 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;
}
如果您使用像 "widget.usernames.length" 这样的结构,编程代码可能会在两个地方失败:
- 当小部件 = null
- 当 widget.username = null(您的情况)
您不能在空对象上调用方法和属性;这就是您收到此错误的原因。所以在你调用 widget.usernames.length 之前你必须确保这两种情况都不会发生。这是如何完成的以及检查是否真的有必要取决于您程序的其余部分。一种检查方法是:
return widget?.username?.length ?? 0;
widget.usernames.length 好像只是声明的。但未初始化或未分配任何值。所以它抛出一个空错误。
您应该将值分配给 widget.usernames.length 作为 List<int> widget.usernames.length = [1,4,5,7];
或根据要求从父级传递数据。
而且还可以检查 null
itemCount: widget.usernames.length != null ? widget.usernames.length : 0;
所以目前我正在使用 Flutter 构建应用程序,这对我来说仍然是新的,我被困在那个标题中的那个例外。
问题是当我试图在 ListView.builder 调用“widget.usernames.length”时,它会 return 如果它为空并且有数据时没有异常。
我想要完成的是 get Length 函数应该 return 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;
}
如果您使用像 "widget.usernames.length" 这样的结构,编程代码可能会在两个地方失败:
- 当小部件 = null
- 当 widget.username = null(您的情况)
您不能在空对象上调用方法和属性;这就是您收到此错误的原因。所以在你调用 widget.usernames.length 之前你必须确保这两种情况都不会发生。这是如何完成的以及检查是否真的有必要取决于您程序的其余部分。一种检查方法是:
return widget?.username?.length ?? 0;
widget.usernames.length 好像只是声明的。但未初始化或未分配任何值。所以它抛出一个空错误。
您应该将值分配给 widget.usernames.length 作为 List<int> widget.usernames.length = [1,4,5,7];
或根据要求从父级传递数据。
而且还可以检查 null
itemCount: widget.usernames.length != null ? widget.usernames.length : 0;