我基本上想要将assets文件夹中的图像显示在画布上。
import 'package:flutter/material.dart' as ui;
...
ui.Image img = ui.Image.asset("images/some_image.png");
ui.paintImage(canvas: canvas, image: img);
当我尝试将图像分配到绘制图像图像时出现以下错误消息。
参数类型'Image(C:\ ABC \ flutter \ packages \ flutter \ lib \ src \ widgets \ image.dart)'无法分配给参数类型'Image(C:\ ABC \ flutter \ bin \ cache) \ PKG \ sky_engine \ LIB \ UI \ painting.dart)”。
我真的不知道会出现什么问题,我看到其他代码与ui.Image有类似的方法。
请指教。
在flutter中有两个叫做Image
的类,在不同的包中。
有Widget,其行为类似于小部件,可以从资产,内存或通过其命名构造函数从网络实例化。
还有ui包Image,用于在较低级别绘画,例如在CustomPainter
。由于此版本在ui
包中,因此通常使用ui
前缀导入,如下所示:
import 'dart:ui' as ui;
不要导入material
作为ui
!这将导致很多混乱。
要创建窗口小部件,请使用Image.asset
构造函数,传递资产名称。
要从资产制作ui.Image
,请使用以下代码段:
Future<ui.Image> load(String asset) async {
ByteData data = await rootBundle.load(asset);
ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List());
ui.FrameInfo fi = await codec.getNextFrame();
return fi.image;
}