Flutter Listview 在从视频 url 加载缩略图图像时冻结,我的应用程序崩溃了



当我的列表滚动时,我正在尝试从视频 url 获取图像,但是当我使用视频缩略图库并在我的应用程序列表中调用它时冻结并且我的应用程序崩溃这是我的代码

Future _loadMore(context) async {
final directory=Provider.of<DirectoryPath>(context,listen: false);
Provider.of<LoadState>(context).setLoadState(true);
final index= Provider.of<IndexLazyloading>(context);

if(moves.length!=index.oldmove){
resetlist(context);
}
// Add in an artificial delay

for (var i = index.currentindex; i <= index.currentindex + increment && i<moves.length; i++) {
File f=new File( "${directory.directory}/${moves[i].videourl.split("/").last.replaceAll("mp4", "png")}");
if(!f.existsSync())
await getimage("${strings.baseurl}/videos/${moves[i].videourl}",context);
index.setdata(i);
}
await new Future.delayed(const Duration(seconds: 2));
Provider.of<LoadState>(context).setLoadState(false);
index.setcurrentIndex(index.data.length)  ;
index.setoldMove(moves.length);
}

这是我使用的插件

Future<Null> getimage(videourl,context)async{
final uint8list = await VideoThumbnail.thumbnailFile(
video: videourl,
thumbnailPath: Provider.of<DirectoryPath>(context).directory,
imageFormat: ImageFormat.WEBP,
maxHeightOrWidth: 0, // the original resolution of the video
quality: 75,
);
}

我尝试使用 PNG,但不起作用 这是我调用此函数的列表,此代码中存在什么问题,请帮助我

LazyLoadScrollView(
isLoading: loadstate.isload,
onEndOfPage: () => _loadMore(context),
child: ListView.builder(
itemCount: indexlayze.data.length,
itemBuilder: (context, position) {
return _buildProductItem(context,position);
},
));

我的列表到达列表末尾时会获得 10 个图像缩略图,但如何处理它非常慢

将这个作业专用于在云上运行的NGINX/NodeJS服务怎么样?让应用程序从中下载缩略图。这就是我以前所做的。

如果您确实需要通过应用程序生成缩略图,请尝试以下几件事:

  • 使用JPG/PNG而不是WebP,因为它在iOS上花费很多CPU
  • 创建列表或流以对请求进行排队,在完成之前显示占位符缩略图。
  • 在列表视图停止滚动后确定队列的优先级。
  • 缩略图
  • 完成后向图像组件发出信号,并采取下一项调用缩略图

相关内容

  • 没有找到相关文章

最新更新