Viewing version 5.15.0. Open the latest package page.

flutter_gen_core

5.15.0

The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.

Download archive

Readme

The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.

Inspired by SwiftGen.

Motivation

Using asset path string directly is not safe.

# pubspec.yaml
flutter:
  assets:
    - assets/images/profile.jpg

❌ Bad
What would happen if you made a typo?

Widget build(BuildContext context) {
  return Image.asset('assets/images/profile.jpeg');
}

// The following assertion was thrown resolving an image codec:
// Unable to load asset: assets/images/profile.jpeg

⭕️ Good
We want to use it safely.

Widget build(BuildContext context) {
  return Assets.images.profile.image();
}

Installation

As a part of build_runner

  1. Add build_runner and FlutterGen to your package's pubspec.yaml file:

    environment:
      sdk: ^3.7.0
    
    dev_dependencies:
      build_runner: ^2.12.0
      flutter_gen_runner:
    

    flutter_gen_runner now relies on post-process builders with build_to: source, so build_runner >=2.12.0 is required.

  2. Install FlutterGen

    flutter pub get
    
  3. Use FlutterGen

    dart run build_runner build
    

Pub workspaces

FlutterGen also supports dart pub workspaces. Run build_runner from the workspace root, and make sure each workspace member that should be built has resolution: workspace in its pubspec.yaml.

# workspace root pubspec.yaml
environment:
  sdk: ^3.7.0

workspace:
  - packages/app
# packages/app/pubspec.yaml
name: app
resolution: workspace

dev_dependencies:
  flutter_gen_runner:
  build_runner: ^2.12.0
dart run build_runner build --workspace

FlutterGen will resolve each package from the active build target instead of the process working directory, so package-local pubspec.yaml configuration and output paths continue to work in workspace builds.

If generated source files were removed manually while .dart_tool/build is still present, run dart run build_runner clean from the workspace root before running build --workspace again. The current post-process builder flow can re-materialize files reliably after a clean build, but a warm incremental build may skip unchanged manifests.

For workspace builds, use Dart >=3.7.0 together with build_runner >=2.12.0.

Pub Global

Works with macOS, Linux and Windows.

dart pub global activate flutter_gen

You might need to set up your path.

Homebrew

Works with macOS and Linux.

brew install FlutterGen/tap/fluttergen

asdf

Works with macOS and Linux. asdf-fluttergen is compatible with mise.

# add plugin
asdf plugin add fluttergen
# or
asdf plugin add fluttergen https://github.com/FlutterGen/asdf-fluttergen.git

# install fluttergen
asdf install fluttergen latest

See also: FlutterGen/asdf-fluttergen

GitHub Actions

Works with macOS and Linux.

- uses: FlutterGen/setup-fluttergen@v1
  with:
    version: ${{ fluttergen_version }}

See also: FlutterGen/setup-fluttergen

Usage

Run fluttergen after the configuration pubspec.yaml.

fluttergen -h

fluttergen -c example/pubspec.yaml

fluttergen --workspace -c pubspec.yaml

Use --workspace to treat the config file as a workspace root pubspec and run generation for each listed workspace member. Without --workspace, the command generates for exactly one package.

When --workspace is enabled, the root pubspec.yaml is used only to discover workspace members from its workspace: section. FlutterGen then switches to each member package and loads that package's own pubspec.yaml and, if present, its local build.yaml.

That means workspace-wide command execution behaves like this:

  • Root pubspec.yaml: selects which packages to visit.
  • Member pubspec.yaml: provides flutter and flutter_gen configuration.
  • Member build.yaml: overrides generator options for that member only.

The --build option is only available in single-package mode. In workspace mode, put any overrides in each package's local build.yaml instead.

Configuration file

FlutterGen generates dart files based on the key flutter and flutter_gen of pubspec.yaml.
Default configuration can be found here.

# pubspec.yaml
# ...

flutter_gen:
  output: lib/gen/ # Optional (default: lib/gen/)
  # line_length: 80 # Optional

  # Optional
  integrations:
    image: true
    flutter_svg: true
    rive: true
    lottie: true

  colors:
    inputs:
      - assets/color/colors.xml

flutter:
  uses-material-design: true
  assets:
    - assets/images/

  fonts:
    - family: Raleway
      fonts:
        - asset: assets/fonts/Raleway-Regular.ttf
        - asset: assets/fonts/Raleway-Italic.ttf
          style: italic

build.yaml

When using build_runner, you can also configure generator options in the target build.yaml. These builder options are applied on top of the pubspec.yaml configuration for the current target.

# build.yaml
# ...

targets:
  $default:
    builders:
      flutter_gen_runner: # or flutter_gen
        options:
          output: lib/build_gen/ # Optional (default: lib/gen/)
          line_length: 120 # Optional

Available Parsers

Assets

Following the doc Adding assets and images#Specifying assets to specify assets, then FlutterGen will generate related dart files.
No other specific configuration is required.
Ignore duplicated.

# pubspec.yaml
flutter:
  assets:
    - assets/images/
    - assets/images/chip3/chip.jpg
    - assets/images/chip4/chip.jpg
    - path: assets/images/icons/paint.svg
    - path: assets/images/icons/transformed.svg
      transformers:
        - package: vector_graphics_compiler
    - assets/images/icons/dart@test.svg
    - assets/json/fruits.json
    - assets/flare/Penguin.flr
    - assets/rive/vehicles.riv
    - pictures/ocean_view.jpg

  # Also include assets from deferred components
  # https://docs.flutter.dev/perf/deferred-components
  deferred-components:
    - name: myDeferredComponent
      assets:
        - assets/images/another_image.jps
        - assets/videos/a_large_video.mp4

These configurations will generate assets.gen.dart under the lib/gen/ directory by default.

Flavored assets

Flutter supports Conditionally bundling assets based on flavor. Assets are only available with flavors if specified. flutter_gen will generate the specified flavors for assets regardless the current flavor. The flavors field accessible though .flavors, for example:

print(MyAssets.images.chip4.flavors); // -> {'extern'}

Excluding generating for assets

You can specify flutter_gen > assets > exclude using Glob patterns to exclude particular assets.

flutter_gen:
  assets:
    exclude:
      - folder-your-want-to-exclude/**
      - specified-asset.jpg

See more patterns with the package:glob.

Generate for packages

If you want to generate assets for a package, use package_parameter_enabled under flutter_gen > assets > outputs.

flutter_gen:
  assets:
    outputs:
      package_parameter_enabled: true # <- Add this line.

This would add the package constant to the generated class. For example:

class Assets {
  const Assets._();

  static const String package = 'test';

  static const $AssetsImagesGen images = $AssetsImagesGen();
  static const $AssetsUnknownGen unknown = $AssetsUnknownGen();
}

Then you can use assets with the package implicitly or explicitly:

// Implicit usage for `Image`/`SvgPicture`/`Lottie`.
Widget build(BuildContext context) {
  return Assets.images.icons.paint.svg(
    width: 120,
    height: 120,
  );
}

or

// Explicit usage for `Image`/`SvgPicture`/`Lottie`.
Widget build(BuildContext context) {
  return SvgPicture.asset(
    Assets.images.icons.paint.path,
    package: Assets.package,
    width: 120,
    height: 120,
  );
}

Generate directories path

If you want to generate the path of directories, use directory_path_enabled under flutter_gen > assets > outputs.

flutter_gen:
  assets:
    outputs:
      directory_path_enabled: true # <- Add this line.

This would add the path getter to the generated directory class. For example:

class $AssetsImagesGen {
  const $AssetsImagesGen();

  ///******///

  /// Directory path: assets/images
  String get path => 'assets/images';
}

Including additional metadata

At build time, additional metadata may be included in the generated class, by using the parse_metadata option.

flutter_gen:
  parse_metadata: true # <- Add this line (default: false)

For image based assets, a new nullable size field is added to the generated class. For example:

AssetGenImage get logo => const AssetGenImage(
  'assets/images/logo.png',
  size: Size(209.0, 49.0),
);

Which can now be used at runtime without parsing the information from the actual asset.

Widget build(BuildContext context) {
  return Assets.images.logo.size!.width;
}

You can use parse_animation to generate more animation details. It will automatically parse all animation information for GIF and WebP files, including frames, duration, etc. As this option significantly increases generation time, The option is disabled by default; enabling it will significantly increase the generation elapse.

flutter_gen:
  images:
    parse_animation: true # <- Add this line (default: false)
    # This option implies parse_metadata: true when parsing images.

For GIF and WebP animation, several new nullable field is added to the generated class. For example:

AssetGenImage get animated =>
  const AssetGenImage(
    'assets/images/animated.webp',
    size: Size(209.0, 49.0),
    isAnimation: true,
    duration: Duration(milliseconds: 1000),
    frames: 15,
  );

Usage Example

FlutterGen generates Image class if the asset is Flutter supported image format.

Example results of assets/images/chip.jpg:

  • Assets.images.chip is an implementation of AssetImage class.
  • Assets.images.chip.image(...) returns Image class.
  • Assets.images.chip.provider(...) returns ImageProvider class.
  • Assets.images.chip.path just returns the path string.
  • Assets.images.chip.values just returns the values list.
Widget build(BuildContext context) {
  return Assets.images.chip.image();
}

Widget build(BuildContext context) {
  return Assets.images.chip.image(
    width: 120,
    height: 120,
    fit: BoxFit.scaleDown,
  );

Widget build(BuildContext context) {
  // Assets.images.chip.path = 'assets/images/chip3/chip3.jpg'
  return Image.asset(Assets.images.chip.path);
}

If you do not want to generate AssetGenImage, set flutter_gen > integrations > image to false.

# pubspec.yaml
flutter_gen:
  integrations:
    image: false

If you are using SVG images with flutter_svg you can use the integration feature. This feature also supports using vector_graphics_compiler transformer and the produced code will use the AssetBytesLoader for such transformed assets.

# pubspec.yaml
flutter_gen:
  integrations:
    flutter_svg: true

flutter:
  assets:
    - assets/images/icons/paint.svg
    - path: assets/images/icons/transformed.svg
      transformers:
        - package: vector_graphics_compiler
Widget build(BuildContext context) {
  return Assets.images.icons.paint.svg(
    width: 120,
    height: 120
  );
}

Available Integrations

Packages File extension Setting Usage
flutter_svg .svg flutter_svg: true Assets.images.icons.paint.svg()
rive .riv rive: true Assets.rive.vehicles.rive()
lottie .json, .zip, .lottie, .tgs lottie: true Assets.lottie.hamburgerArrow.lottie()

Note: For lottie integration with .lottie and .tgs files, you must add a custom decoder via decoder parameter, see lottie's document for more information.

In other cases, the asset is generated as String class.

// If don't use the Integrations.
final svg = SvgPicture.asset(Assets.images.icons.paint);

final json = await rootBundle.loadString(Assets.json.fruits);

FlutterGen also support generating other style of Assets class:

# pubspec.yaml
flutter_gen:
  assets:
    outputs:
      # Assets.imagesChip
      # style: camel-case

      # Assets.images_chip
      # style: snake-case

      # Assets.images.chip (default style)
      # style: dot-delimiter

flutter:
  assets:
    - assets/images/chip.png

The root directory will be omitted if it is either assets or asset.

assets/images/chip3/chip.jpg      => Assets.images.chip3.chip
assets/images/chip4/chip.jpg      => Assets.images.chip4.chip
assets/images/icons/paint.svg     => Assets.images.icons.paint
assets/images/icons/dart@test.svg => Assets.images.icons.dartTest
assets/json/fruits.json           => Assets.json.fruits
pictures/ocean_view.jpg           => Assets.pictures.oceanView

Example of code generated by FlutterGen

Fonts

Just follow the doc Use a custom font to specify fonts, then FlutterGen will generate related dart files.
No other specific configuration is required.
Ignore duplicated.

# pubspec.yaml
flutter:
  fonts:
    - family: Raleway
      fonts:
        - asset: assets/fonts/Raleway-Regular.ttf
        - asset: assets/fonts/Raleway-Italic.ttf
          style: italic
    - family: RobotoMono
      fonts:
        - asset: assets/fonts/RobotoMono-Regular.ttf
        - asset: assets/fonts/RobotoMono-Bold.ttf
          weight: 700

These configurations will generate fonts.gen.dart under the lib/gen/ directory by default.

Generate for packages

If you want to generate fonts for a package, use package_parameter_enabled under flutter_gen > fonts > outputs.

flutter_gen:
  fonts:
    outputs:
      package_parameter_enabled: true # <- Add this line.

This would add the package constant to the generated class. For example:

class Fonts {
  Fonts._();

  static const String package = 'test';

  static const String raleway = 'packages/$package/Raleway';
  static const String robotoMono = 'packages/$package/RobotoMono';
}

Usage Example

Text(
  'Hi there, I\'m FlutterGen',
  style: TextStyle(
    fontFamily: FontFamily.robotoMono,
    fontFamilyFallback: const [FontFamily.raleway],
  ),
)

Example of code generated by FlutterGen

Colors

FlutterGen supports generating colors from XML format files.
Ignore duplicated.

# pubspec.yaml
flutter_gen:
  colors:
    inputs:
      - assets/color/colors.xml
      - assets/color/colors2.xml

FlutterGen can generate a Color class based on the name attribute and the color hex value. If the element has the attribute type, then a specially color will be generated.

Currently supported special color types:

Noticed that there is no official material color generation algorithm. The implementation is based on the mcg project.

<color name="milk_tea">#F5CB84</color>
<color name="cinnamon" type="material">#955E1C</color>
<color name="yellow_ocher" type="material material-accent">#DF9527</color>

These configurations will generate colors.gen.dart under the lib/gen/ directory by default.

Usage Example

Text(
  'Hi there, I\'m FlutterGen',
  style: TextStyle(
    color: ColorName.denim,
  ),

Example of code generated by FlutterGen

Credits

The material color generation implementation is based on mcg and TinyColor.

Issues

Please file FlutterGen specific issues, bugs, or feature requests in our issue tracker.

Plugin issues that are not specific to FlutterGen can be filed in the Flutter issue tracker.

Known Issues

Bad State: No Element when using build_runner

If you get an error message like this:

[SEVERE] flutter_gen_runner:flutter_gen_runner on $package$:

Bad state: No element
[SEVERE] Failed after 16.0s

The you most likely have a customized build.yaml to configure the build runner. In that case, all you have to do is to add the pubspec.yaml as build source to your build.yaml

targets:
  $default:
    sources:
      include:
        - pubspec.yaml # add this line
        - ...

See #268 for the corresponding issue discussion.

Error with internationalization

Please try to remove generate: true in your pubspec.yaml and disable synthetic-package in your l10n.yaml like:

# pubspec.yaml
flutter:
  generate: true <--- ⚠️Remove this line⚠️
# l10n.yaml
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
synthetic-package: false <--- ⚠️Add this line⚠️

Contributing

We are looking for co-developers.

If you wish to contribute a change to any of the existing plugins in this repo, please review our contribution guide and open a pull request.

Changelog

5.15.0

Feature

Fix

  • #764 Add xml 7.x support by widening flutter_gen_core's xml constraint to >=6.0.0 <8.0.0. by @Akhrameev

Development

  • #757 Scope GITHUB_TOKEN to least privilege in the release workflow.
  • Fix tag glob in the Release / Publish workflows so pushing a vMAJOR.MINOR.PATCH[+build|-pre] tag actually triggers them (previous publish.yml used regex syntax that GitHub Actions filter globs never matched).
  • Bump CI toolchain: Flutter 3.44.4, Node.js 24.18.0, pnpm 11.9.0, lint-staged v17.

5.14.1

Development

  • Fix package root resolution after build_runner 2.14.0 AOT changes. by @Carapacik

5.14.0

Feature

  • Add build_runner --workspace support for flutter_gen_runner using a manifest + post-process materialization pipeline.
  • Add fluttergen --workspace support to the command package, including package-local build.yaml overrides for each workspace member.

Development

  • Document and align the minimum supported versions for the new build pipeline: Dart >=3.7.0 and build_runner >=2.12.0.
  • Document the current build_runner --workspace rebuild limitation for manually deleted generated files and recommend build_runner clean before rebuilding.

5.13.0+1

Development

  • Fixes version conflict between packages.

5.13.0

Development

5.12.0

Development

5.11.0

Feature

  • #576 Add support for deferred components. by @ianmaciel
  • #676 Add new option parse_animation to parse metadata for animated images. by @HuanDu
  • #680 Add svg ColorMapper to svg loader. by @sysint64
  • #685 Use .vec SVG class for vector_graphics_compiler transformed assets. by @Albert221
  • #697 Refactor how generated files are being formatted. by @AlexV525

Development

5.10.0

Feature

  • #659 Add support Telegram Sticker .tgs in Lottie Integration. by @dungngminh

Bug fix

5.9.0

Feature

Development

Bug fix

  • #592 Accept both flutter_gen and flutter_gen_runner as the entry of build.yaml. by @b2nkuu

5.8.0

Feature

Development

5.7.0

Feature

  • #548 Add Import abstraction for package imports alias. by @AlexV525

Development

5.6.0

Bug fix

5.5.0+1

Feature

  • #471 Handles root directory assets. by @AlexV525
  • #472 Add directory_path_enabled to output the path of assets directory classes. by @AlexV525
  • #487 Add support for 'useArtboardSize' argument in rive integration. by @devilbuddy
  • #493 Add support for vector graphics (vec files) in SvgGenImage. by @raldhafiri

Bug fix

  • #485 Remove default SvgTheme argument preventing DefaultSvgTheme works correctly. by @mym0404

Development

  • Update to Dart 3.3.4.
  • Update to Flutter 3.19.6.

5.4.0

Feature

  • #435 Allowed the generated values statement to optionally be static. @bramp

Bug fix

  • #432 Refactored the AssetGenImage code to be another Integration. @bramp

Development

  • #438 Fix module configurations.
  • Update to Dart 3.2.0.
  • Update to Flutter 3.16.0.

5.3.2

Bug fix

  • #409 Update dependencies.
    • Update Dart SDK to >=2.17.0 <4.0.0.

Development

  • Update to Dart 3.1.2.
  • Update to Flutter 3.13.5.

Team

5.3.1

Bug fix

  • #383 Fix the wrong path for unknown mime types when packageParameterEnabled is enabled. @blaugold

5.3.0

Feature

  • #361 Add package parameter to generated asset provider method. @orevial

Bug fix

Development

5.2.0

Feature

  • #350 [BREAKING CHANGES] Upgrade for support of flutter_svg 2.0.0.

5.1.0, 5.1.0+1

Feature

  • #322 #327 [BREAKING CHANGES] Add keyName to integrations and exchange the path value.

5.0.3

Bug fix

  • #322 Fix wrong package asset path with svg, lottie, flare and rive integrations.
  • #323 Fix generate failed when only list in a JSON files.

5.0.2

Bug fix

  • #308 #309 Fix missing add to the lottie#controller.

5.0.1

Bug fix

  • #300 Fix package_parameter_enabled being ignored for Flare, Rive and Lottie.
  • #303 Add ignore_for_file: implicit_dynamic_list_literal to generated files.

Development

  • #306 Update required analyzer: '>=4.7.0 <6.0.0'

5.0.0

Feature

  • #285 #298 Add Lottie files integration.

    // Assets.lottie.hamburgerArrow.lottie()
    SizedBox(
      width: 200,
      height: 200,
      child: Assets.lottie.hamburgerArrow.lottie(
        fit: BoxFit.contain,
      ),
    ),
    
  • #286 Allow users to change generated class name for assets, fonts, and colors.

    flutter_gen:
      assets:
        # Optional
        outputs:
          class_name: MyAssets # Default is `Assets`
    
      fonts:
        # Optional
        outputs:
          class_name: MyFontFamily # Default is `FontFamily`
    
      colors:
        # Optional
        outputs:
          class_name: MyColorName # Default is `ColorName`
    
  • #291 Add values list to generated classes for each directory.

    Assets.images.values // <List<AssetGenImage>>[chip1, chip2, logo, profileJpg, profilePng];
    
  • #292 Support an ImageProvider.

    // Assets.images.chip.provider()
    Container(
      height: 400,
      decoration: BoxDecoration(
        image: DecorationImage(
          image: Assets.images.chip.provider(),
        ),
      ),
      child: const Center(child: Text('Deco')),
    ),
    
    
  • #294 [BREAKING CHANGES] Moved the style and package_parameter_enabled to under assets.outputs scope.

    
    # ❌ Before
    flutter_gen:
      # ...
      assets:
        package_parameter_enabled: true
        style: snake-case
        outputs:
          class_name: MyAssets
    
    # ⭕️ After
    flutter_gen:
      # ...
      assets:
        outputs:
          class_name: MyAssets
          package_parameter_enabled: true
          style: snake-case
    

Bug fix

  • #287 Delete the generated files then flutter_gen won't generate files again

4.3.0

Feature

Bug fix

  • #247 Make the default scale value null, so Flutter decides the one to use.

4.2.1, 4.2.1+1

Bug fix

  • #236 The crypto package 3.0.2 conflict in flutter_gen_runner 4.2.0 with integration_test.

4.2.0

Feature

  • #208 Add scale and opacity parameters to Image().

  • #221 Support for build_runner watch.

  • #227 Maintenance for Flutter3 (flutter_lints to 2.0.1).

  • #229 Removed the AssetImage inheritance from AssetGenImage.

    // Before
    Widget build(BuildContext context) {
      return Image(image: Assets.images.chip);  // Can't use this.
    }
    // After
    Widget build(BuildContext context) {
      return Assets.images.chip.image();
    }
    
    • Added example_resource package for how to use another package resources from an app.
    # file: example_resources/pubspec.yaml
    # ...
    flutter_gen:
      # ...
      assets:
        enabled: true
        package_parameter_enabled: true
    
    #...
    
  • #230 Add coverage ignore comment on generated file headers.

  • Update collection to 1.16.0.

  • Update min dart sdk to >=2.14.0 <3.0.0.

Development

  • Update to Dart 2.17.1
  • Update to Flutter 3.0.1

4.1.6, 4.1.6+1

Feature

  • #199 #201 Expose some parameters of SvgPicture (flutter_svg).
    • theme
    • cacheColorFilter

4.1.5

Bug fix

  • #187 Update dependencies.
    • analyzer

4.1.4

Feature

  • #180 #182 Update to dartx 1.0.0 and json_serializable to 6.0.0

Development

  • Update to Dart 2.15.0
  • Update to Flutter 2.8.1

4.1.3

Bug fix

  • #172 #173 Add unnecessary_import in ignore_for_title because cause warning from Dart 2.15.

4.1.2+1, 4.1.2+2

Development

  • Added sample code.

4.1.2

Bug fix

  • #156 The Dartdocs generate different strings on Windows and Ubuntu.

4.1.0

Feature

  • #138 Generate dartdoc as follows.
    /// File path: pictures/chip5.jpg
    AssetGenImage get chip5 => const AssetGenImage('pictures/chip5.jpg');
    /// Color: #979797
    static const Color gray410 = Color(0xFF979797);
    
  • #143 Support Rive files type.
    flutter_gen:
      integrations:
        rive: true
    
  • #150 Added the --version option for command-line.
    % fluttergen --version
    FlutterGen v4.1.0
    
    Bug fix
  • #134 Added the ability to support the at symbol (@) in file names.
    AssetGenImage get logo2x => const AssetGenImage('assets/images/logo@2x.png');
    
    Development
  • Update to Dart 2.14.4.
  • Update to Flutter 2.5.3.
  • Replace to renovate.

4.0.1

Bug fix

  • #134 Support the at symbol (@) in file names.
  • #139 Error: Method not found: '$checkedCreate

Development

  • Replace to flutter_lints.

4.0.0

Features

  • [BREAKING] Ended support for Non null safety codes.
  • Use for line_length instead of lineLength.

Development

  • Replace to Melos.
  • Add VSCode setting.

3.1.2

3.1.1

Features & Bug fix

  • #103 Add option packageParameterEnabled to control whether to generate package parameter for assets or not.

3.1.0

Features

  • #98 Support for adding assets from a package

3.0.0, 3.0.1, 3.0.2

  • Support Null Safety
flutter_gen:
  output: lib/gen/
  line_length: 80
  null_safety: true # Optional (default: true)

2.0.1, 2.0.2, 2.0.3

  • Update dependencies

2.0.0

New Feature

  • [BREAKING CHANGE] #49 #53 Name collision with flutter localization when using build_runner

    # Before
    # dev_dependencies:
    #  flutter_gen: 1.3.1
    
    # After
    dev_dependencies:
      flutter_gen_runner: ^2.0.0
    
  • #74 Doesn't generate assets.gen.dart when there are no assets

    flutter_gen:
      fonts:
        enabled: false
    
  • #59 Handling duplicate file names

    // generated codes
    static const AssetGenImage imagesProfileJpg = AssetGenImage('assets/images/profile.jpg');
    static const AssetGenImage imagesProfilePng = AssetGenImage('assets/images/profile.png');
    

Bug fix

  • #75 Null safety support for generated files

1.3.1

Bug fix

  • #60 Set files like .DS_Store to the ignore list.

1.3.0

New Feature

1.2.2

Bug fix

  • #51 Added support for Key parameter in image() and svg().

1.2.1

Bug fix

  • #42 Generated output folder name not being respected

1.2.0

New Feature

  • #40 Support MaterialAccentColor

1.1.0

New Feature

  • #33 Support to generate flat hierarchy assets with field name style:
    • camel-case
    • snake-case
    • dot-delimiter (Default)

1.0.3

Bug fix

  • Insufficient params of flutter_svg #32

1.0.2

Bug fix

  • Generate sorted statements #27
  • Make Windows work properly #28

1.0.1

Bug fix

1.0.0

Initial release.

  • Assets generator

    • Supported image type.
    • Supported SVG as an integration.
    • And others.
  • Fonts generator

  • Colors generator

    • Supported xml file.
      • MaterialColor

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'flutter_gen_core:5.15.0'
pubspec.yaml
name: flutter_gen_core
description: The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.
version: 5.15.0
homepage: https://github.com/FlutterGen/flutter_gen
repository: https://github.com/FlutterGen/flutter_gen/tree/main/packages/core
documentation: https://github.com/FlutterGen/flutter_gen
issue_tracker: https://github.com/FlutterGen/flutter_gen/issues

environment:
  sdk: ^3.4.0

version_gen:
  path: lib/

dependencies:
  meta: ^1.7.0
  path: ^1.8.0
  yaml: ^3.0.0
  mime: '>=1.0.0 <3.0.0'
  xml: '>=6.0.0 <8.0.0'
  dartx: ^1.0.0
  color: ^3.0.0
  collection: ^1.15.0
  json_annotation: ^4.4.0
  glob: ^2.0.0
  logging: ^1.3.0

  dart_style: ^3.0.0
  archive: '>=3.4.0 <5.0.0'
  args: ^2.0.0
  pub_semver: ^2.0.0
  vector_graphics_compiler: ^1.1.9
  image_size_getter: ^2.4.0
  image: ^4.5.4

dev_dependencies:
  lints: any # Ignoring the version to allow editing across SDK versions.
  test: ^1.16.0
  build_runner: ^2.0.0
  json_serializable: ^6.0.0
  version_gen: ^1.0.1

Version history

VersionPublishedArchiveSHA-256
0.0.1On demandDownload5410bcd7…14f9fe
0.0.2On demandDownload3607ba0c…c137ca
2.0.0-dev.1On demandDownload2011fa12…501669
2.0.0On demandDownloadf81a0eba…adaa8d
2.0.1-dev.0On demandDownload82ef8b4b…e61674
2.0.1-dev.1On demandDownload46a8ed1e…a8ed22
2.0.1On demandDownloadf246074a…d2d2a0
2.0.2On demandDownloadd67ff0ac…24a9a7
2.0.3On demandDownload6c8b3e77…fa05af
3.0.0On demandDownload232d1d36…455ee4
3.0.0+1On demandDownload2a19755a…5eeb63
3.0.1On demandDownloada0dc6a7f…74b0be
3.0.2On demandDownload28a32150…2dcc2b
3.1.0On demandDownloadf57284e6…3c2c78
3.1.1On demandDownload5790cbd4…45ffa5
3.1.2On demandDownloadcca9b80e…cf949a
4.0.0On demandDownload666dbea7…36765b
4.0.1On demandDownloade3c00c3f…f41128
4.1.0On demandDownloadefe57547…827df3
4.1.1On demandDownload96a60b27…3867aa
4.1.2On demandDownload130e3583…9a9621
4.1.2+1On demandDownload461e06a3…208db7
4.1.2+2On demandDownload95e40162…09ffdb
4.1.3On demandDownloadf7d9d27d…dd7d4d
4.1.4On demandDownloaddd6b74ea…875867
4.1.5On demandDownload41b35788…332820
4.1.6On demandDownload46a0d3cf…2a6114
4.1.6+1On demandDownload2e5314a7…0dcd3a
4.2.0On demandDownload58912c1d…7ee913
4.2.1On demandDownloadd27af508…f0cf6f
4.2.1+1On demandDownload5a372e29…5908f4
4.3.0On demandDownloadf22863d3…940293
5.0.0On demandDownloadec0e9909…395f16
5.0.1On demandDownloadc0cd68d0…3e62c2
5.0.2On demandDownload73282fa6…f3bf3a
5.0.3On demandDownload170fe9cc…84b936
5.1.0On demandDownload305211b4…670065
5.1.0+1On demandDownload8c5edb4d…749ccb
5.2.0On demandDownloade74db9fc…7c7a0a
5.3.0On demandDownload41ed478d…788763
5.3.1On demandDownloade8637dd6…d5004d
5.3.2On demandDownload8b4ff1d4…b6b830
5.4.0On demandDownload3a6c3dbc…e45308
5.5.0On demandDownload6cbc6458…ed2a13
5.5.0+1On demandDownloadb9894396…6e0f52
5.6.0On demandDownloadd8e828ad…947795
5.7.0On demandDownload638d5188…94d99d
5.8.0On demandDownload46ecf0e3…225325
5.9.0On demandDownload53890b65…764c21
5.10.0On demandDownload3eaa2d3d…e32bfc
5.11.0On demandDownloadeda54fdc…0195fb
5.12.0On demandDownloadb6bafbbd…849311
5.13.0On demandDownloadef3f4373…7add88
5.13.0+1On demandDownload22b3198a…17e0b1
5.14.0On demandDownload454ec926…54b23e
5.14.1On demandDownload1413fbd0…d9b0e5
5.15.0Cached · Upstream SHA-256 matchedDownload8ccb1f80…b5eef3

Dependencies

archive "\u003e=3.4.0 \u003c5.0.0"

args "^2.0.0"

collection "^1.15.0"

color "^3.0.0"

dart_style "^3.0.0"

dartx "^1.0.0"

glob "^2.0.0"

image "^4.5.4"

image_size_getter "^2.4.0"

json_annotation "^4.4.0"

logging "^1.3.0"

meta "^1.7.0"

mime "\u003e=1.0.0 \u003c3.0.0"

path "^1.8.0"

pub_semver "^2.0.0"

vector_graphics_compiler "^1.1.9"

xml "\u003e=6.0.0 \u003c8.0.0"

yaml "^3.0.0"