我基本上想将 Assets 文件夹中的图像显示在 Canvas 上。
import 'package:flutter/material.dart' as ui;
...
ui.Image img = ui.Image.asset("images/some_image.png");
ui.paintImage(canvas: canvas, image: img);
当我尝试将img分配给paintImage的图像时,收到以下错误消息。
我真的不知道会出什么问题,我已经看到其他与ui.Image具有类似方法的代码。
请指教。
最佳答案
flutter中有两个类,称为Image
,位于不同的程序包中。
有一个Widget,其行为类似于小部件,可以通过 Assets ,内存或网络通过其命名的构造函数实例化。
还有一个ui包Image,它在较低级别(例如CustomPainter
)中绘画时使用。由于此版本位于ui
软件包中,因此通常使用ui
前缀导入,如下所示:
import 'dart:ui' as ui;
不要将
material
导入为ui
!这将导致很多困惑。要制作小部件,请使用
Image.asset
构造函数,并传递 Assets 名称。要使用 Assets 制作
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;
}