延迟Listview或Image.network以避免状态代码:444



我有一个ListView,它正在显示卡片中的一些项目。该卡具有CachedNetworkImage,它正在将我之前从网站抓取的链接中的图像加载到列表中。我的问题是——至少我认为——ListView有50-100个项目,加载图像的请求发送到服务器的速度太快,因为在50-100个图像中,有时会加载10-20或30个,其余的会返回HTTP请求失败,statusCode:444。我正在寻找一种延迟请求的方法,哪怕只有200毫秒。我尝试使用FutureBuilder来延迟,但当我打印时间来监控请求的速度时,它们仍然在一秒钟内发送。感谢

FutureBuilder(
future: Future.delayed(Duration(milliseconds: 500)),
builder:(c,s)=>
ListView.builder(
itemCount: 50,
itemBuilder(context, index){
return Card(
child: Row(
children: [
CachedNetworkImage(
imageUrl: imagesLink[index],
placeholder: (context, url) => CircularProgressIndicator(),
errorWidget: (context,url,error) => new Icon(Icons.error),
),
]
),
);
}
)
)

api似乎限制了您的请求速率,因此您无法同时发送所有请求。您的方法的问题在于,它只会延迟Listview.builder()显示您的所有图像。一种方法是像这样一个接一个地延迟图像的显示:

ListView.builder(
itemCount: 50,
itemBuilder: (context, index) {
return FutureBuilder(
future: Future.delayed(
Duration(milliseconds: 50 * index)), // Adjust this to fit api
builder: (_, __) => Card(
child: Row(children: [
CachedNetworkImage(
imageUrl: imagesLink[index],
placeholder: (context, url) => CircularProgressIndicator(),
errorWidget: (context,url,error) => new Icon(Icons.error),
),
]),
),
);
},
);

相关内容

最新更新