如何在Dart中链接多个ImageElement加载事件
我将JavaScript背景图像加载程序转换为Dart,有点像这样: 我用定时器检查图像是否全部加载。 这样行 但在Dart中有可链接的未来,我想知道你们是否可以链接 图像元素的背景加载如何在Dart中链接多个ImageElement加载事件,dart,Dart,我将JavaScript背景图像加载程序转换为Dart,有点像这样: 我用定时器检查图像是否全部加载。 这样行 但在Dart中有可链接的未来,我想知道你们是否可以链接 图像元素的背景加载 ImageElement a=新的ImageElement(); ImageElement b=新的ImageElement(); ImageElement c=新的ImageElement(); Future.wait([a.src='a.jpg',b.src='b.jpg',c.src='ca.jpg'])
ImageElement a=新的ImageElement();
ImageElement b=新的ImageElement();
ImageElement c=新的ImageElement();
Future.wait([a.src='a.jpg',b.src='b.jpg',c.src='ca.jpg']))
。然后((列出响应)=>选择响应(响应))
.catchError((e)=>handleError(e));
当然,分配src和实际的图像加载是异步的,所以这不起作用
我还需要一些代码来执行每个图像一旦加载
也许我需要写我自己的FutureMageElement类,但我想我应该先问一下
有什么想法吗?你真的需要为此与Futures合作吗 为什么不这样做呢:
列出文件=[“a”、“b”、“c”];
int imagesToLoad=files.length;
for(文件中的字符串文件名){
ImageElement pic=新的ImageElement()
..src=“$fileName.jpg”
…onLoad.listen((事件e){
//文件加载完毕后执行某些操作
图像加载--;
如果(imagesToLoad==0){
//加载所有图像后执行某些操作
}
})
;
}
当然,你可以使用期货。只需使用streams的first
属性:
var a=newimageelement(src:'a.png');
var b=新的ImageElement(src:'b.png');
var c=新的ImageElement(src:'c.png');
var期货=[a.onLoad.first,b.onLoad.first,c.onLoad.first];
Future.wait(futures).then((u)=>print('done');
文本“完成”将在加载所有三个图像时打印。这是一个很好的解决方案,但我想知道是否还有Dart“未来”方式。我注意到onLoad返回一个EventStreamProvider。我想知道我是否能用上它。我觉得这可以教我一些未来的高级用法,我怀疑这是可能的。