我得到了这个运行时错误,尽管如果我单击后退按钮,那么屏幕将被导航到我试图重定向的路径,但在此之前,这个错误屏幕总是会弹出。
下面是代码片段:
body: Container(
child: FutureBuilder<DocumentSnapshot>(
future: _service.categories.doc(args.id).get(),
builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Container();
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator(),);
}
var data = snapshot.data!['subCat'];
return Container(
child: ListView.builder(
itemCount: data.length,
itemBuilder: (BuildContext context, int index){
return Padding(
padding: const EdgeInsets.only(left: 8,right: 8),
child: ListTile(
onTap: (){
//sub categories
},
title: Text(data[index],style: TextStyle(fontSize: 16),),
),
);
},
),
);
},
),
),
发布于 2022-04-16 15:12:40
您正在处理error
和loading
状态。试着检查数据是否存在,然后继续使用它。在这种情况下,在检查watting
状态之后检查数据。
if(!snapshot.hasData){
return Text("it doesnt Have any data");
}
我将鼓励您在不检查null的情况下不直接使用!
。在你的情况下,它是开着的
var data = snapshot.data!['subCat'];
做
var data = snapshot.data?['subCat'];
if (data==null){
return Text("subCat is empty");
}
///else move to list container
发布于 2022-04-16 16:09:19
这是因为您的"itemCount: data.length“没有可读取的数据。不能从空实例调用".length“。
尝试检查您的数据是否为null,或者它是否具有listView.builder可以迭代的值。
https://stackoverflow.com/questions/71894974
复制相似问题