在构建时转换资源
如何在你的 Flutter 应用中设置图片(及其他资源)的自动转换。
你可以使用兼容的 Dart 包配置项目,在构建时自动转换资源。
指定资源转换
#在 pubspec.yaml 文件中,列出要转换的资源及关联的转换器包。
flutter:
assets:
- path: assets/logo.svg
transformers:
- package: vector_graphics_compiler
使用此配置,assets/logo.svg 在复制到构建输出时会由 vector_graphics_compiler
包进行转换。该包将 SVG 文件预编译为优化的二进制文件,可使用 vector_graphics
包显示,如下所示:
import 'package:vector_graphics/vector_graphics.dart';
const Widget logo = VectorGraphic(loader: AssetBytesLoader('assets/logo.svg'));
向资源转换器传递参数
#要向资源转换器传递参数字符串,也需在 pubspec 中指定:
flutter:
assets:
- path: assets/logo.svg
transformers:
- package: vector_graphics_compiler
args: ['--tessellate', '--font-size=14']
链式资源转换器
#资源转换器可以链式组合,并按声明顺序应用。考虑以下使用假想包的示例:
flutter:
assets:
- path: assets/bird.png
transformers:
- package: grayscale_filter
- package: png_optimizer
此处,bird.png 先由 grayscale_filter 包转换,输出再由 png_optimizer 包转换,然后才打包进构建后的应用。
编写资源转换器包
#
资源转换器是一个通过 dart run 调用的 Dart 命令行应用,至少需要两个参数:--input
包含要转换的文件路径,--output 是转换器代码必须写入输出的位置。
如果转换器以非零退出码结束,应用构建将失败,并附带说明资源转换失败的错误消息。转换器写入进程 stderr
流的任何内容都会包含在错误消息中。
在调用转换器期间,FLUTTER_BUILD_MODE 环境变量将设为所使用构建模式的 CLI 名称。例如,如果你使用 flutter run -d macos --release
运行应用,则 FLUTTER_BUILD_MODE 将设为 release。
示例
#要查看使用资源转换并包含用作转换器的自定义 Dart 包的 Flutter 示例项目,请查看 Flutter 示例仓库中的 asset_transformers 项目。
除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-04。查看文档源码 或者 为本页面内容提出建议。