Flutter资源生成插件resources_generator的使用
Flutter资源生成插件resources_generator的使用
特性
通过assets/文件夹生成一个资源类,类似于Android中的R类。
配置
此生成器支持生成通用的assets文件夹和按口味(flavors)划分的assets文件夹。
没有口味时
assets文件夹的必要结构:
<your-project>
├── <assets-folder>/
├── images/ (用于图片)
├── vectors/ (用于矢量图或SVG)
├── translations/ (用于本地化)
├── fonts/ (用于字体)
├── scripts/ (用于Shell脚本)
├── configs/ (用于JSON配置)
├── raws/ (用于原始文件)
├── lib/
├── pubspec.yaml
有口味时
assets文件夹的必要结构:
<your-project>
├── <assets-folder>/
├── all/ (所有口味通用)
├── images/ (用于图片)
├── vectors/ (用于矢量图或SVG)
├── translations/ (用于本地化)
├── fonts/ (用于字体)
├── scripts/ (用于Shell脚本)
├── configs/ (用于JSON配置)
├── raws/ (用于原始文件)
├── <flavor-0>
├── ... (与all/相同)
├── <flavor-1>
├── ... (与all/相同)
├── <flavor-2>
├── ... (与all/相同)
├── ...
├── lib/
├── pubspec.yaml
使用方法
激活生成器执行文件:
dart pub global activate resources_generator
进入项目根目录:
cd <your-project>
执行生成器:
dart pub global run resources_generator:generate -i <assets-folder> -o <output-folder> -p <optional-package> -f
自动监控资产变化并生成:
dart pub global run resources_generator:monitor -i <assets-folder> -o <output-folder> -p <optional-package> -f
参数说明:
-i或--input:可选,输入的资产文件夹,默认为assets。-o或--output:可选,输出文件夹,默认为lib/resources。-p或--package:可选,包名,如果资产在模块中而不是应用中。-f或--with-flavor:可选,将资源类生成到口味中。
注意事项
字体生成
生成字体时,字体文件名必须遵循以下格式:<family>-<attr-1>-<attr-2>.ttf,其中attrs表示字体样式和粗细。这些属性是可选的。
示例:
Roboto.ttf, Roboto-Italic.ttf, Roboto-Italic-w600.ttf
颜色生成
生成颜色时,所有以colors为前缀的JSON文件都会被处理。根据此类文件的数量,生成器会生成合适的资源文件。
示例:
单个文件(单变体颜色):
├── <assets-folder>/
├── colors/
├── colors.json
多个文件(多变体颜色):
├── <assets-folder>/
├── colors/
├── colors_dark.json
├── colors_light.json
完整示例
项目结构
my_project/
├── assets/
├── images/
├── logo.png
├── background.jpg
├── fonts/
├── Roboto-Regular.ttf
├── Roboto-Bold.ttf
├── colors/
├── colors.json
├── lib/
├── pubspec.yaml
生成命令
dart pub global run resources_generator:generate -i assets -o lib/resources
生成后的资源类示例(lib/resources/assets.dart):
class Assets {
// 图片
static const String imageLogo = 'assets/images/logo.png';
static const String imageBackground = 'assets/images/background.jpg';
// 字体
static const String fontRobotoRegular = 'assets/fonts/Roboto-Regular.ttf';
static const String fontRobotoBold = 'assets/fonts/Roboto-Bold.ttf';
// 颜色
static const Map<String, dynamic> colors = {
"primary": "#000000",
"secondary": "#FFFFFF",
};
}
更多关于Flutter资源生成插件resources_generator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter资源生成插件resources_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
resources_generator 是一个用于 Flutter 项目的资源生成插件,它可以帮助开发者自动化生成资源文件(如图片、字体、JSON 等)的引用代码,从而减少手动编写资源引用代码的工作量。
安装 resources_generator
-
在
pubspec.yaml中添加依赖:首先,你需要在
pubspec.yaml文件中添加resources_generator和build_runner作为开发依赖。dev_dependencies: build_runner: ^2.1.0 resources_generator: ^5.0.0 -
运行
flutter pub get安装依赖:在终端中运行以下命令来安装依赖:
flutter pub get
配置 resources_generator
-
在项目中创建
build.yaml文件:在项目的根目录下创建一个
build.yaml文件,用于配置resources_generator。targets: $default: builders: resources_generator|resources_builder: options: output: lib/generated/resources.dart package_name: your_package_nameoutput: 指定生成的 Dart 文件的路径和名称。package_name: 替换为你的 Flutter 项目的包名。
-
在
pubspec.yaml中声明资源:确保你在
pubspec.yaml文件中已经声明了需要生成的资源,例如图片、字体等。flutter: assets: - assets/images/ fonts: - family: MyCustomFont fonts: - asset: assets/fonts/MyCustomFont.ttf
生成资源文件
-
运行
build_runner:在终端中运行以下命令来生成资源文件:
flutter pub run build_runner build这将会在
lib/generated/目录下生成一个resources.dart文件,其中包含了所有资源的引用代码。 -
使用生成的资源:
你可以在代码中直接使用生成的资源引用。例如:
import 'package:your_package_name/generated/resources.dart'; class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Image.asset(R.assets.images.my_image); } }其中
R.assets.images.my_image是自动生成的资源引用。
自动生成资源文件
如果你希望在每次更改资源时自动重新生成资源文件,可以使用 watch 模式:
flutter pub run build_runner watch

