使用方法
1.使用 @globalConfig 注解,从pubspec.yaml里生成一个静态dart文件
@globalConfig
class AnyClass{}
2.如果你想修改一些文件,你可以继承GlobalFileModifier类后添加functions,他是个FunctionBean列表:
- FunctionBean.path:要修改的文件
- FunctionBean.func:修改 源数据(参数source) 的函数,可在此函数中返回最终的内容,若发现参数source中不需修改,返回null放弃修改
@globalConfig
class AnyClass extends GlobalFileModifier {
@override
List<FunctionBean> functions = [
FunctionBean(
path: "android/app/build.gradle.kts",
func: (String source){
return "$source";
},
),
];
}
//根据yaml文件修改包名,app名和签名
@globalConfig
class Config extends GlobalFileModifier {
@override
List<FunctionBean> functions = [
changeAndroidAppName(),
changeIosAppName(),
changeAndroidPackageName(),
changeIosPackageName(),
changeAndroidSignType(),
];
}
3.执行代码生成
flutter pub run build_runner clean
flutter pub run build_runner build --delete-conflicting-outputs
4.生成的文件config.gen.dart大概是
// GENERATED CODE - DO NOT MODIFY BY HAND
// **************************************************************************
// GlobalConfigGenerator
// **************************************************************************
// Generate at:2025-07-23T11:42:14.957633
class YamlEntity {
final String name;
final String description;
final String publish_to;
final String version;
final String app_name;
final String package_name;
final String android_sign;
final String base_url;
final Environment environment;
final Fluwx fluwx;
final Dependencies dependencies;
final Dev_dependencies dev_dependencies;
final Flutter flutter;
const YamlEntity(
{required this.name,
required this.description,
required this.publish_to,
required this.version,
required this.app_name,
required this.package_name,
required this.android_sign,
required this.base_url,
required this.environment,
required this.fluwx,
required this.dependencies,
required this.dev_dependencies,
required this.flutter});
factory YamlEntity.fromJson(Map<String, dynamic> json) {
return YamlEntity(
name: json['name'],
description: json['description'],
publish_to: json['publish_to'],
version: json['version'],
app_name: json['app_name'],
package_name: json['package_name'],
android_sign: json['android_sign'],
base_url: json['base_url'],
environment: Environment.fromJson(
Map<String, dynamic>.from(json['environment'] ?? const {})),
fluwx:
Fluwx.fromJson(Map<String, dynamic>.from(json['fluwx'] ?? const {})),
dependencies: Dependencies.fromJson(
Map<String, dynamic>.from(json['dependencies'] ?? const {})),
dev_dependencies: Dev_dependencies.fromJson(
Map<String, dynamic>.from(json['dev_dependencies'] ?? const {})),
flutter: Flutter.fromJson(
Map<String, dynamic>.from(json['flutter'] ?? const {})),
);
}
}
class Environment {
final String sdk;
const Environment({required this.sdk});
factory Environment.fromJson(Map<String, dynamic> json) {
return Environment(
sdk: json['sdk'],
);
}
}
class Fluwx {
final String app_id;
final bool debug_logging;
const Fluwx({required this.app_id, required this.debug_logging});
factory Fluwx.fromJson(Map<String, dynamic> json) {
return Fluwx(
app_id: json['app_id'],
debug_logging: json['debug_logging'],
);
}
}
class Dependencies {
final DependenciesFlutter flutter;
final String get;
final String path_provider;
final String flutter_easyloading;
final String intl;
final String event_bus;
final DependenciesImage_gallery_saver image_gallery_saver;
final String image_picker;
final String flutter_colorpicker;
final String share_plus;
final String archive;
final String image;
final String reorderables;
final String isar;
final String shared_preferences;
final String path;
final String yaml;
final String source_gen;
final String analyzer;
final String build;
final String meta;
final DependenciesIsar_flutter_libs isar_flutter_libs;
final String webview_flutter;
final String video_player;
final String fluwx;
final String json_annotation;
final DependenciesGen_global_config gen_global_config;
final String dio;
const Dependencies(
{required this.flutter,
required this.get,
required this.path_provider,
required this.flutter_easyloading,
required this.intl,
required this.event_bus,
required this.image_gallery_saver,
required this.image_picker,
required this.flutter_colorpicker,
required this.share_plus,
required this.archive,
required this.image,
required this.reorderables,
required this.isar,
required this.shared_preferences,
required this.path,
required this.yaml,
required this.source_gen,
required this.analyzer,
required this.build,
required this.meta,
required this.isar_flutter_libs,
required this.webview_flutter,
required this.video_player,
required this.fluwx,
required this.json_annotation,
required this.gen_global_config,
required this.dio});
factory Dependencies.fromJson(Map<String, dynamic> json) {
return Dependencies(
flutter: DependenciesFlutter.fromJson(
Map<String, dynamic>.from(json['flutter'] ?? const {})),
get: json['get'],
path_provider: json['path_provider'],
flutter_easyloading: json['flutter_easyloading'],
intl: json['intl'],
event_bus: json['event_bus'],
image_gallery_saver: DependenciesImage_gallery_saver.fromJson(
Map<String, dynamic>.from(json['image_gallery_saver'] ?? const {})),
image_picker: json['image_picker'],
flutter_colorpicker: json['flutter_colorpicker'],
share_plus: json['share_plus'],
archive: json['archive'],
image: json['image'],
reorderables: json['reorderables'],
isar: json['isar'],
shared_preferences: json['shared_preferences'],
path: json['path'],
yaml: json['yaml'],
source_gen: json['source_gen'],
analyzer: json['analyzer'],
build: json['build'],
meta: json['meta'],
isar_flutter_libs: DependenciesIsar_flutter_libs.fromJson(
Map<String, dynamic>.from(json['isar_flutter_libs'] ?? const {})),
webview_flutter: json['webview_flutter'],
video_player: json['video_player'],
fluwx: json['fluwx'],
json_annotation: json['json_annotation'],
gen_global_config: DependenciesGen_global_config.fromJson(
Map<String, dynamic>.from(json['gen_global_config'] ?? const {})),
dio: json['dio'],
);
}
}
class DependenciesFlutter {
final String sdk;
const DependenciesFlutter({required this.sdk});
factory DependenciesFlutter.fromJson(Map<String, dynamic> json) {
return DependenciesFlutter(
sdk: json['sdk'],
);
}
}
class DependenciesImage_gallery_saver {
final String path;
const DependenciesImage_gallery_saver({required this.path});
factory DependenciesImage_gallery_saver.fromJson(Map<String, dynamic> json) {
return DependenciesImage_gallery_saver(
path: json['path'],
);
}
}
class DependenciesIsar_flutter_libs {
final String path;
const DependenciesIsar_flutter_libs({required this.path});
factory DependenciesIsar_flutter_libs.fromJson(Map<String, dynamic> json) {
return DependenciesIsar_flutter_libs(
path: json['path'],
);
}
}
class DependenciesGen_global_config {
final String path;
const DependenciesGen_global_config({required this.path});
factory DependenciesGen_global_config.fromJson(Map<String, dynamic> json) {
return DependenciesGen_global_config(
path: json['path'],
);
}
}
class Dev_dependencies {
final Dev_dependenciesFlutter_test flutter_test;
final String flutter_lints;
final String build_runner;
final String isar_generator;
final String json_serializable;
const Dev_dependencies(
{required this.flutter_test,
required this.flutter_lints,
required this.build_runner,
required this.isar_generator,
required this.json_serializable});
factory Dev_dependencies.fromJson(Map<String, dynamic> json) {
return Dev_dependencies(
flutter_test: Dev_dependenciesFlutter_test.fromJson(
Map<String, dynamic>.from(json['flutter_test'] ?? const {})),
flutter_lints: json['flutter_lints'],
build_runner: json['build_runner'],
isar_generator: json['isar_generator'],
json_serializable: json['json_serializable'],
);
}
}
class Dev_dependenciesFlutter_test {
final String sdk;
const Dev_dependenciesFlutter_test({required this.sdk});
factory Dev_dependenciesFlutter_test.fromJson(Map<String, dynamic> json) {
return Dev_dependenciesFlutter_test(
sdk: json['sdk'],
);
}
}
class Flutter {
final bool uses_material_design;
final List<String> assets;
const Flutter({required this.uses_material_design, required this.assets});
factory Flutter.fromJson(Map<String, dynamic> json) {
return Flutter(
uses_material_design: json['uses-material-design'],
assets: List<String>.from(json['assets'] ?? []),
);
}
}
var yamlMap = YamlEntity.fromJson({
"name": "tomato",
"description": "A new Flutter project.",
"publish_to": "none",
"version": "5.1.1+52",
"app_name": "番茄斗图表情包",
"package_name": "com.cartoon.tomato",
"android_sign": "manhua360",
"base_url": "https://aiman-dev.getprime.cn/emoji/v1/",
"environment": {"sdk": "^3.8.1"},
"fluwx": {"app_id": "123456", "debug_logging": true, "android": null},
"dependencies": {
"flutter": {"sdk": "flutter"},
"get": "^4.7.2",
"path_provider": "^2.1.5",
"flutter_easyloading": "^3.0.5",
"intl": "^0.20.2",
"event_bus": "^2.0.1",
"image_gallery_saver": {"path": "packages/image_gallery_saver"},
"image_picker": "^1.1.2",
"flutter_colorpicker": "^1.1.0",
"share_plus": "^11.0.0",
"archive": "^4.0.7",
"image": "^4.5.4",
"reorderables": "^0.6.0",
"isar": "3.1.0",
"shared_preferences": "^2.5.3",
"path": "^1.9.1",
"yaml": "^3.1.3",
"source_gen": "^1.5.0",
"analyzer": "^5.13.0",
"build": "^2.4.1",
"meta": "^1.16.0",
"isar_flutter_libs": {"path": "packages/isar_flutter_libs"},
"webview_flutter": "^4.13.0",
"video_player": "^2.10.0",
"fluwx": "^5.6.0",
"json_annotation": "^4.9.0",
"gen_global_config": {"path": "/Users/jimo/IdeaProjects/gen_global_config"},
"dio": "^5.8.0+1"
},
"dev_dependencies": {
"flutter_test": {"sdk": "flutter"},
"flutter_lints": "^5.0.0",
"build_runner": "^2.4.13",
"isar_generator": "3.1.0",
"json_serializable": "^6.8.0"
},
"flutter": {
"uses-material-design": true,
"assets": ["assets/"]
}
});
- 你可以直接使用yamlMap获取yaml文件的配置