在Flutter中,drawImage或paintImage无法正常工作

问题描述 投票:1回答:1

我基本上想要将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有类似的方法。

请指教。

canvas dart flutter flutter-layout
1个回答
5
投票

在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;
  }
© www.soinside.com 2019 - 2024. All rights reserved.