是否可以在 Flutter 中的 3x 设备上使用 2x 资产

Is it possible to use 2x assets on a 3x device in Flutter

我有一个 iOS 和 Android 应用程序,是用 Flutter 编写的。我有一个包含 png 文件的资产文件夹,以标准的 Flutter 方式构建,包含 1.5x2x3x4x 子文件夹。

我已将此添加到 pubspec.yaml:

  assets:
    - assets/

这很好用。

但是对于一组特定的图像,我希望它们只有一种尺寸,比如说 2x,然后只缩放其他尺寸的图像。我知道这会使它们有点模糊,但对于那些特定的图像,这没关系。

对于原生 iOS 开发,我可以只包含 2x 图像,iOS 会自动选择这些图像并缩放它们,例如在 3x 设备上。

有没有办法用 Flutter 实现同样的效果?

如果我只是删除 3x 文件夹中的资产,我在 3x 设备上会出现异常。

请参考flutter官方文档link

这里提供了以下示例,说明如何使用与图像标称分辨率相对应的数字标识符:

.../my_icon.png
.../2.0x/my_icon.png
.../3.0x/my_icon.png

根据我的测试,接近自动缩放的一种方法是包括 1x 和 2x 资产。这似乎导致 Flutter 也将 2x 资产用于 3x 设备。

如果我在项目中只包含 2x 资产,它将在运行时失败并出现异常。如果我只包含 1x 资产,这些将被使用和缩放。如果我同时包含 1x 和 2x 资产,将使用和缩放 2x 资产。

缩放后的 2 倍资产在 3 倍设备 (iPhone X) 和使用 1 倍资产时看起来明显不那么模糊。