gen_global_config 0.2.0 copy "gen_global_config: ^0.2.0" to clipboard
gen_global_config: ^0.2.0 copied to clipboard

Generate global configuration code through YAML files, and easily modify other files such as Android architecture, app name, iOS name, version, and other native project files through the generator

使用方法 #

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文件的配置
1
likes
115
points
43
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Generate global configuration code through YAML files, and easily modify other files such as Android architecture, app name, iOS name, version, and other native project files through the generator

Repository

License

MIT (license)

Dependencies

analyzer, build, collection, flutter, flutter_web_plugins, meta, source_gen, yaml

More

Packages that depend on gen_global_config