Flutter资源生成插件sresources_generator的使用
Flutter资源生成插件sresources_generator的使用
sresources_generator
是一个用于生成颜色、图片、语言文本等资源的插件。它能够与 GetX 库集成。
1、图片文件:
将图片文件放入项目根目录下的 assets/image/(dark|light)
文件夹中,其中 dark
和 light
分别代表两种主题。你可以添加更多的主题文件夹,并且文件名可以自定义。
注意,需要在 pubspec.yaml
中添加子文件夹路径,否则这些子文件夹不会被编译到包中。
每个主题中的图片文件名应该相同。
如果特定主题文件夹中不存在某个图片文件,则会自动使用默认主题文件夹中的版本(配置在 pubspec.yaml
中)。
如果没有在 pubspec.yaml
中配置默认图片文件夹,生成器将使用第一个文件夹的名字作为默认值。
示例:
假设你有两个主题文件夹 dark
和 light
,并且它们都有一个名为 example.png
的图片文件。
flutter:
assets:
- assets/images/
- assets/images/dark/
- assets/images/light/
2、颜色资源:
在 assets
目录下创建一个名为 color
的子文件夹(也可以选择其他名字,但需要在 pubspec.yaml
中进行配置),然后创建 .xml
文件,文件名最好根据你的主题值命名(如图像文件夹下的 dark
或 light
文件夹)。
然后,可以在 .xml
文件中添加颜色,格式类似于 Android 颜色 XML 格式。
如果特定颜色 XML 文件中不存在某个颜色,则会自动使用默认主题 XML 文件中的版本(配置在 pubspec.yaml
中)。
可以使用 @colorName
来引用另一个存在的颜色,如果目标颜色未找到,则该颜色不会添加到生成的文件中。
如果没有在 pubspec.yaml
中配置默认颜色文件,生成器将使用第一个文件的名字作为默认值。
示例:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
<color name="gray_70">@black</color>
<color name="gray_70">#EEEEEE</color>
<color name="gray_410">#979797</color>
<color name="crimson_red" type="material">#CF2A2A</color>
<color name="yellow_ocher" type="material material-accent">#DF9527</color>
</resources>
3、文本资源
1). 对于 GetX:
语言文本内容如下:
@AppTextsSource()
Map<String, String> localeZH_CN = {
"hello_blank_fragment": "简中Hello blank fragment",
"hello_blank_fragment2": r'"简中Hello blank fragment"',
"hello_blank_fragment3": "简中Hello blank\n, fragment",
"hello_blank_fragment4": '简中Hello blank\n, fragment',
"hello_blank_fragment1": "简中Hello@{test1} blank @{test2} fragment",
"hello_blank_fragment5": '''简中Hello blank fragment5''',
"hello_blank_fragment6": r'''简中Hello blank 'fragment6''',
"hello_blank_fragment7": r'''简中Hello
blank ' "
test @{name}
f'ragment''',
"hello_blank_fragment9": '简中Hello blank, @name fragment9',
"hello_blank_fragment10": r'简中Hello blank, @{test}fragment10',
"hello_blank_fragment11": """简中Hello
blank ; ' "
fragment""",
};
@AppTextsSource()
用于标记此映射以供生成使用,也可以通过将此文件的路径添加到 pubspec.yaml
中来指定。
@{test1}
及其他类似格式的字符串(@{...}
)是可以替换为实际值的模式,在生成后,test1
将成为文本获取函数的参数。
4、路由资源
1). 对于 GetX:
在页面类上添加注解,例如:
@AppRouteGet(path: '/sresdemo/routeTestPage', name: 'routeTest', transition: GetTransition.rightToLeft)
name
将用作此路由字段的名称,而 transition
是根据 GetX 显示页面时的动画效果。
生成后,你会得到一个类,类似于:
class TestRoutes {
TestRoutes._();
static const TextTest = "/sresdemo/textTestPage";
static const routeTest = "/sresdemo/routeTestPage";
static const themeTestPage = "/sresdemo/themeTest";
static final pages = [
GetPage(name: TextTest, page: () => const TextTestPage()),
GetPage(
name: routeTest,
page: () => const RouteTestPage(),
transition: Transition.rightToLeft,
),
GetPage(name: themeTestPage, page: () => ThemeTestPage()),
];
}
TestRoutes
是在 pubspec.yaml
中配置的名称。
在项目 pubspec.yaml
中的配置
dependencies:
sresources_generator: x.x.x
// 可选配置
sresources:
output: lib/resources/ // 输出文件夹
colors:
enabled: true // 启用生成器
path: assets/color/ // 颜色 XML 文件夹路径
default: 0 // 默认主题的颜色 XML 文件,注意每个颜色 XML 文件应命名为主题值
name: AppColors // 类名
images:
enabled: true // 启用生成器
path: assets/images/ // 图片文件夹(父)路径
default: 0 // 默认主题的图片文件夹,注意每个文件夹应命名为主题值
name: AppImagess // 类名
// 没有实现
languages:
enabled: true // 启用生成器
name: AppTexts // 类名
languages_get: // GetX 库风格
enabled: true // 启用生成器(与 languages 配置相反)
name: AppTexts // 类名
transition: Transition.rightToLeft // 默认显示动画
// 正在编写中...
routes_get: // GetX 库风格页面路由
enabled: true // 启用生成器
name: AppRoutes // 类名
flutter:
assets:
- assets/images/
- assets/images/0/ # 主题 0 图片文件夹
- assets/images/1/ # 主题 1 图片文件夹
exclude:
- assets/color/ # 排除颜色资源 XML 文件(不添加到构建包中)
更多关于Flutter资源生成插件sresources_generator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter资源生成插件sresources_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是关于如何在Flutter项目中使用sresources_generator
插件的一个代码案例。这个插件主要用于生成资源文件(如图片、颜色等)的访问代码,从而简化资源的管理和使用。
1. 添加依赖
首先,你需要在你的pubspec.yaml
文件中添加sresources_generator
的依赖:
dependencies:
flutter:
sdk: flutter
sresources_generator: ^最新版本号 # 请替换为最新版本号
dev_dependencies:
build_runner: ^最新版本号 # build_runner用于运行代码生成任务
2. 创建资源目录
在你的Flutter项目根目录下创建一个assets
目录,并在其中创建子目录来存放你的资源文件,例如图片(images)、颜色(colors)等。
your_flutter_project/
├── assets/
│ ├── images/
│ │ └── example.png
│ └── colors/
│ └── colors.yaml # 你可以使用YAML文件来定义颜色
3. 定义颜色资源(可选)
在assets/colors/colors.yaml
文件中定义你的颜色资源,例如:
primaryColor: "#FF6F00"
secondaryColor: "#008CBA"
4. 配置资源路径
在你的pubspec.yaml
文件中配置资源路径,以便Flutter能够识别这些资源:
flutter:
assets:
- assets/images/example.png
- assets/colors/colors.yaml
5. 使用sresources_generator
生成代码
在你的项目根目录下运行以下命令来生成资源访问代码:
flutter pub get
flutter pub run build_runner build
6. 使用生成的资源代码
假设你已经成功生成了资源访问代码,你可以在Dart文件中使用这些生成的代码。以下是一个简单的示例:
6.1 访问图片资源
import 'package:your_flutter_project/generated/assets.g.dart'; // 导入生成的资源文件
// 使用生成的资源路径
Image.asset(Assets.images.example.path);
6.2 访问颜色资源
import 'package:your_flutter_project/generated/assets.g.dart'; // 导入生成的资源文件
import 'package:flutter/material.dart';
// 使用生成的颜色
Color primaryColor = Assets.colors.primaryColor.color;
Color secondaryColor = Assets.colors.secondaryColor.color;
// 应用颜色到Material组件
Material(color: primaryColor, child: Text("Hello, Flutter!"));
注意事项
sresources_generator
插件生成的代码通常位于generated
目录下,并且文件名通常是assets.g.dart
。- 生成的代码会根据你资源文件的变化而变化,因此每次添加或修改资源文件后,都需要重新运行
flutter pub run build_runner build
命令。 - 确保你的
pubspec.yaml
文件中的资源路径配置正确,否则资源将无法被识别和使用。
通过上述步骤,你就可以在Flutter项目中成功使用sresources_generator
插件来管理和访问你的资源文件了。