Flutter转换不同类型的图像类

时间:2020-01-15 19:50:02

标签: flutter dart widget

我是Flutter的新手。显然,Image有不同的类。我正在研究的是:

import 'package:image/image.dart'; // Image Class 1
import 'package:flutter/src/widgets/image.dart'; // Image Class 2

我已使用Image Class 2加载了资产图片。我不知道如何将其转换为Image Class 1,反之亦然。 Image Class 1有两个构造函数Image.fromBytes(...)Image.from(Image other),但事实是另一个类没有提供图像的字节数组。有什么建议?

1 个答案:

答案 0 :(得分:2)

所引用的图像类来自Flutter image类。该文档是here。您列出的构造函数并不是要在不同的图像类型之间进行转换。对于特定类型的图像,它们是不同的生成器。您引用的Image.from()静态方法实际上称为“命名构造函数”。 .from构造函数是常用的Dart数据类构造函数,用于有效地将一个对象复制到另一个对象(与Javascript中的Object.assign({}, myObject)完全不同。

您试图做的事超出了您在问题中引用的命名构造函数的目的。 Dart在其标准库中确实提供了一个相当强大的图像库。 See Here

如果您尝试使图像抖动,可以使用以下代码作为示例:

final Widget image = new Image(image: NetworkImage('https://via.placeholder.com/700'));

顺便说一句,有a very helpful VS Code plugin可以自动为您的飞镖模型生成数据类。

编辑:显示如何加载资产图片

如果您尝试加载资产图片,请使用以下内容:

Image.asset(
        'assets/images/asset_image.png',
      );

当然,您需要在pubspec.yaml中注册资产。为此,请在pubspec.yaml的flutter部分下,添加以下内容:

  assets:
    - assets/images/

然后,当您重新编译时,您应该能够加载资产。 Official docs on assets in flutter.