构建时转换资源
您可以使用兼容的 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 命令行应用程序,它使用 dart run
调用,至少有两个参数:--input
,包含要转换的文件的路径;--output
,转换器代码必须将其输出写入的位置。
如果转换器以非零退出代码结束,则应用程序构建将失败,并显示一条错误消息,说明资源转换失败。转换器通过进程的 stderr
流写入的任何内容都包含在错误消息中。
在调用转换器期间,FLUTTER_BUILD_MODE
环境变量将设置为正在使用的构建模式的 CLI 名称。例如,如果您使用 flutter run -d macos --release
运行应用程序,则 FLUTTER_BUILD_MODE
将设置为 release
。
示例
#有关使用资源转换并包含用作转换器的自定义 Dart 包的 Flutter 项目示例,请查看 Flutter 示例库中的 asset_transformers 项目。
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。