Flutter Qs:在 null 上调用了 getter 'length'

时间:2021-07-26 08:50:23

标签: flutter dart

所以我已经创建了条件,如果调用的数据为空,那么它会显示无数据,但它仍然有错误。

这是代码

Center(
            child: ListView.builder(
                itemCount: data.length,
                itemBuilder: (BuildContext context, int index) {
                  if (data[index] == null) {
                    return Container(
                        child: Center(
                            child: Text(
                                "No News"
                            )
                        )
                    );
                  } else {
                    return GestureDetector(
                      onTap: () {
                        Navigator.push(context, MaterialPageRoute(
                            builder: (context) =>
                                DetailNewsScreen(
                                  data: data[index],
                                )));
                      },
                      child: Card(
                        child: Row(

但它仍然显示错误

2 个答案:

答案 0 :(得分:3)

您必须检查您的 data 变量是否为 null,否则您无法将 data.length 称为 itemCount

您当前正在检查 data[index] 是否不为 null 而不是 data 本身

你可以试试:

Center(
            child: ListView.builder(
                itemCount: data == null ? 0 : data.length,
                itemBuilder: (BuildContext context, int index) {
                  if (data[index] == null) {
                    return Container(child: Center(child: Text("No News")));
                  } else {
                    // return whatever widget you want
                  } 
                }),
          ),

答案 1 :(得分:1)

data 为空,而不是 data[someIndex]

itemCount: data.length,

您没有涵盖 data==null 的情况。最直接的修复方法是赋值空数组。

if(data==null) data=[]; 在构建视图之前的某个地方。