ds_builder 1.0.4 copy "ds_builder: ^1.0.4" to clipboard
ds_builder: ^1.0.4 copied to clipboard

Flutter项目构建工具,包括路由代码生成和资源R文件生成。与build_runner无缝集成。

DS Builder #

pub.dev

Flutter项目的构建工具集合。包括路由代码生成和资源R文件生成。

功能特性 #

  • 路由生成器:从 route_config.dart 自动生成路由配置
  • 资源生成器:扫描assets目录并生成类型安全的R类,包含所有资源常量
  • 灵活配置:通过 ds_builder_config.yaml 进行灵活配置
  • 零配置:开箱即用,提供合理的默认值- 通用设计:自动检测项目包名,支持任何Flutter项目

安装 #

pubspec.yaml 中添加:

dev_dependencies:
  build_runner: ^2.4.0
  ds_builder: ^1.0.0

使用 #

路由生成器 #

  1. 创建 lib/route_config.dart
const List<List<Object>> routesConfig = [
  ['auth', '/login', 'LoginPage', false, false],
  ['home', '/home', 'HomePage', false, true],
  ['workflow', '/workflow/:id', 'WorkflowPage', true, true],
  ['public', '/about', 'AboutPage', false, false],
];

格式:[group, path, pageName, hasParams, requireLogin]

  • hasParams:是否通过 state.extra 传参
  • requireLogin:是否需要登录校验;false 时会跳过 redirect 中的登录拦截
  • 兼容旧格式:4 个参数时默认 requireLogin = true
  1. 运行build_runner:
dart run build_runner build

这会生成 lib/router.g.dart,包含:

  • RouteNames 类,含所有路由常量
  • GoRouter 配置
  • 命名路由定义

资源生成器 #

  1. assets/ 目录中放置资源:
assets/
├── images/
│   ├── home/
│   │   ├── logo.png
│   │   └── avatar.png
│   └── form/
│       └── attachment.svg
└── file/
    └── config.json
  1. 运行build_runner:
dart run build_runner build

这会生成 lib/res/r.dart,包含:

class R {
  R._();
  
  static const String logoPng = 'assets/images/home/logo.png';
  static const String avatarPng = 'assets/images/home/avatar.png';
  static const String attachmentSvg = 'assets/images/form/attachment.svg';
  static const String configJson = 'assets/file/config.json';
}

配置 #

在项目根目录创建 ds_builder_config.yaml 来自定义行为:

# 扫描资源时忽略的目录
ignoreDirs:
  - images/emoji
  - images/country
  - fonts

如果配置文件缺失,将使用默认值。

项目设置 #

最小配置(使用默认值) #

# 仅需运行build_runner
dart run build_runner build

完整配置(带自定义设置) #

  1. dev_dependencies 中添加 ds_builder
  2. 创建 ds_builder_config.yaml 进行自定义
  3. 运行:dart run build_runner build

生成的文件 #

  • lib/router.g.dart - 路由配置
  • lib/res/r.dart - 资源常量

将这些添加到 .gitignore (可选 - 通常建议提交以确保版本一致性):

# 生成的文件(保留以确保一致的构建)
lib/router.g.dart
lib/res/r.dart

使用示例 #

使用生成的路由 #

import 'package:go_router/go_router.dart';
import 'router.g.dart';

final router = goRouter;

// 导航
context.go(RouteNames.home);
context.push(RouteNames.workflow, extra: {'id': 123});

使用生成的资源 #

import 'res/r.dart';

Image.asset(R.logoPng);
SvgPicture.asset(R.attachmentSvg);

故障排查 #

构建失败 "找不到 route_config.dart" #

确保 lib/route_config.dart 存在于你的项目中。

配置了免登录路由但仍被跳转到登录页 #

  1. 检查 routesConfig 第 5 个参数是否为 false
  2. 确保访问路径与配置路径匹配(例如 /about
  3. 重新执行:dart run build_runner build --delete-conflicting-outputs

资源未出现在 R.dart 中 #

  1. 检查资源是否在 assets/ 目录中
  2. 验证 pubspec.yaml 中的路径:
    flutter:
      assets:
        - assets/
    

配置文件未被读取 #

确保 ds_builder_config.yaml 在项目根目录,而不是子目录中。

性能 #

Builder在 dart run build_runner build 期间运行,并被缓存。后续构建由于增量生成而更快。

开发模式下的监听模式:

dart run build_runner watch
dart pub publish --dry-run

许可证 #

MIT

贡献 #

欢迎贡献!请向仓库提交Pull Request。

支持 #

遇到问题或功能请求,请访问 GitHub仓库

1
likes
130
points
191
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter项目构建工具,包括路由代码生成和资源R文件生成。与build_runner无缝集成。

License

MIT (license)

Dependencies

build, path, yaml

More

Packages that depend on ds_builder