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_name
output
: 指定生成的 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