在构建时转换资源
您可以配置您的项目以使用兼容的 Dart 软件包在构建时自动转换资源。
指定资源转换
#在 pubspec.yaml
文件中,列出要转换的资源和关联的转换器软件包。
yaml
flutter:
assets:
- path: assets/logo.svg
transformers:
- package: vector_graphics_compiler
通过此配置,assets/logo.svg
由 vector_graphics_compiler
软件包转换,因为它被复制到构建输出中。此软件包会将 SVG 文件预编译成优化的二进制文件,可以使用 vector_graphics
软件包显示,如下所示
dart
import 'package:vector_graphics/vector_graphics.dart';
const Widget logo = VectorGraphic(
loader: AssetBytesLoader('assets/logo.svg'),
);
将参数传递给资源转换器
#要将一系列参数传递给资产转换器,也需要在 `pubspec` 中指定。
yaml
flutter:
assets:
- path: assets/logo.svg
transformers:
- package: vector_graphics_compiler
args: ['--tessellate', '--font-size=14']
链接资源转换器
#资产转换器可以串联,并且按照声明的顺序应用。考虑以下使用虚构包的示例
yaml
flutter:
assets:
- path: assets/bird.png
transformers:
- package: grayscale_filter
- package: png_optimizer
这里,`bird.png` 由 `grayscale_filter` 包进行转换。然后,输出结果由 `png_optimizer` 包进行转换,然后再打包到构建的应用中。
编写资源转换器软件包
#资产转换器是一个 Dart 命令行应用程序,它使用 `dart run` 调用,并至少有两个参数:`--input`,包含要转换的文件的路径;`--output`,转换器代码必须将其输出写入的位置。
如果转换器应用程序以非零退出代码结束,则构建将失败,并显示错误消息,说明资产转换失败。转换器写入进程的 stderr
流中的任何内容都包含在错误消息中。
示例
#有关使用资产转换并包含用作转换器的自定义 Dart 包的 Flutter 项目示例,请查看 Flutter 示例仓库中的 asset_transformers 项目。
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-05-20。 查看源代码 或 报告问题.