Image 如何在dart中缓存稍后在canvas2d中绘制的图像?

Image 如何在dart中缓存稍后在canvas2d中绘制的图像?,image,caching,canvas,dart,2d-context-api,Image,Caching,Canvas,Dart,2d Context Api,所以,我学会了如何使用dart在画布上绘制图像,它是这样的: ///create the image element with given source ImageElement myImage = new ImageElement(src:"myImage.png"); ///load the image myImage.onLoad.listen((event){ ///when the image is loaded, draw it

所以,我学会了如何使用dart在画布上绘制图像,它是这样的:

    ///create the image element with given source
    ImageElement myImage = new ImageElement(src:"myImage.png");

    ///load the image
    myImage.onLoad.listen((event){
         ///when the image is loaded, draw it
         myContext.drawImage(myImage, 0, 0);
    });
但是,如何在以后的日期绘制图像

例如,假设我有一个图像列表:

    List<ImageElement> myImageList;
此代码不在onLoad.listen方法中。

您可以在每个图像上使用等待
onLoad

Future.wait(myImageList.map((e)=>e.onLoad.single))。然后((){
myContext.drawImage(myImageList[i],x,y);
//或调用假定已加载图像的函数
});

非常感谢。未来是可怕的。另一方面,我想补充一点(在展望未来之后),window.animationFrame的未来非常棒。基本上,我所做的是将代码封装到一个空图(double dt)中,然后调用window.animationFrame.then(draw)。这使我能够灵活地清除每个帧之间的画布,并让未来处理一切。作为一种优化,我扩展了ImageElement以添加一个isLoaded标志,这样,如果我在未加载图像时调用draw on draw,就不用尝试绘图了。不客气。别忘了验证答案。完成:)抱歉,stackoverflow的新功能。
    myContext.drawImage(myImageList[i], x, y);