Flutter错误:The method ‘[]’ was called on null
- 发表于
- flutter
The method '[]' was called on null
对Widget进行赋值时出现这个错误,表现为界面初始显示网络数据请求未完成前报错,一旦数据请求与赋值成功后界面又刷新到正常。从提示看是数组初始化和渲染之间的问题,检查了Widget赋值长度是6,但是json数组长度不是6,于是尝试截取数组:
1 |
list.sublist(0, 6); |
以为可行,结果证明问题依旧。但错误稍有不同,原来是基于GridView的错误,现在错误层级变成了ListView。
示例Code:
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] ?? " "}"); } ), ); |
NoSuchMethodError: The getter 'length' was called on null
证明和预想的一样,是数据初始化和渲染造成。于是在国个论坛看到一个ask:
如果您使用“ widget.usernames.length”之类的构造,则可能在两个地方出错:
- when widget = null
- when widget.username = null
您不能在空对象上调用方法和属性。这就是为什么您会收到此错误。因此,在调用widget.usernames.length之前,必须确保两种情况均不会发生。如何完成以及是否确实需要检查取决于程序的其余部分。一种检查方法是:
return widget?.username?.length ?? 0;
于是马上尝试该方法,问题解决!
原文连接:Flutter错误:The method ‘[]’ was called on null
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。