構建時轉換資源
你可以配置你的專案,使其在構建時自動使用相容的 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 專案。