3分钟
06 ImageStreamCompleter
ImageStreamCompleter
是一个抽象对象,它主要是用于管理和通知 ImageStream
,处理图片数据后得到的包含有 dart:ui.Image
的对象 ImageInfo 。
接下来我们看 NetworkImage
中的 ImageStreamCompleter
实现类 MultiFrameImageStreamCompleter
。如下图代码所示,MultiFrameImageStreamCompleter
主要通过 codec
参数获得渲染数据,而这个数据来源通过 _loadAsync
方法得到,该方法主要通过 http 下载图片后,对图片数据通过 PaintingBinding
进行 ImageCodec
编码处理,将图片转化为引擎可绘制数据。
而在 MultiFrameImageStreamCompleter
内部, ui.Codec
会被 ui.Image
,通过 ImageInfo
封装起来,并逐步往回回调到 _ImageState
中,然后通过 setState
将数据传递到 RenderImage
内部去绘制。
怎么样,现在再回过头去看开头的流程图,有没有一切明了的感觉?
学员评价