首页 文章

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

提问于
浏览
0

我基本上想要将我在assets文件夹中的图像显示在画布上 .

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的图像时,收到以下错误消息 .

参数类型'Image(C:\ ABC \ flutter \ packages \ flutter \ lib \ src \ widgets \ image.dart)'无法分配给参数类型'Image(C:\ ABC \ flutter \ bin \)缓存\ PKG \ sky_engine \ LIB \ UI \ painting.dart)” .

我真的不知道会出现什么问题,我看到其他代码与ui.Image有类似的方法 .

请指教 .

1 回答

  • 2

    在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;
      }
    

相关问题