flutter - NoSuchMethodError:在 null 上调用了 getter 'length'
问题描述
所以目前我正在使用 Flutter 构建应用程序,这对我来说仍然是新的,我被困在那个标题中的那个例外上。
问题是当我尝试在 ListView.builder 调用“widget.usernames.length”时,如果它为空,它将返回该异常,并且在有数据时没有异常。
我想要完成的是 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;
}
解决方案
如果您使用“widget.usernames.length”之类的结构,则编程代码可能会在两个地方失败:
- 当小部件 = null
- 当 widget.username = null (你的情况)
您不能在空对象上调用方法和属性;这就是您收到此错误的原因。因此,在您调用 widget.usernames.length 之前,您必须确保这两种情况都不会发生。这是如何完成的以及是否真的需要检查取决于程序的其余部分。一种检查方法是:
return widget?.username?.length ?? 0;
推荐阅读
- javascript - 在 React Native 中将 API 响应数据添加到之前的 AsyncStorage 数据中
- python - DAG runtime error with creating Airflow.cfg file
- mysql - Why Liquibase docker container can't connect to Mysql docker container?
- android - Why getItemCount() called multiple times in recycleView?
- multithreading - Flutter : Function need to wait
- scala - 通过简单的 akka-http 路由测试与演员陷入无限循环
- flutter - 用户做某事时如何更新状态?
- firebase - 从应用程序内打开的firebase动态链接
- c++ - 主数据集为空时更新 VCL TClientDataSet(详细集)
- swift - 无法将类型“(Int)-> Bool”的值转换为预期的条件类型“Bool”,并且在范围内找不到 x