如何避免[]在Flutter中调用null

时间:2019-04-12 03:23:34

标签: dart flutter

dart中是否有一种方法来判断对象是否为空,然后决定获取['data']或什么都不做?

这是错误消息:

  

在构建Builder时引发了以下NoSuchMethodError:   方法'[]'在null上被调用。   接收者:null   尝试致电:

2 个答案:

答案 0 :(得分:1)

回答问题的最简单方法:

final data = list != null ? list[0] : null;

有一种简便的方法可以对任何对象的属性和方法执行相同的操作:a?.ba?.b()将首先对a进行空检查,然后获取b或调用分别b,如果a为null,则返回null。

这种速记不适用于仅用于属性和方法的下标。

答案 1 :(得分:0)

正在回答如何检查空值。

您可以使用?.安全地在对象上调用方法。

List<int> badList;
List<int> goodList = [];

badList.add(1); // error because it is null.
badList?.add(1); // no error because it checked for null

goodList.add(1); // no error
goodList?.add(1); // no error

回答列表中的操作方法

据我所知,没有办法在List中进行检查。

List<int> list;
int value = list[0]; // error 

您应该使用

List<int> list;
int index = 1;
if (list != null && index < list.length) { // that's how you should check
  int value = list[index]; // safe to use list[]
}