Skip to main content

A code generator for Flutter

Project description

PyPI - Version PyPI - Python Version Windows - Supported MacOS - Supported

The Flutter code generator for your assets, fonts, colors,… to increase your productivity.

Inspired by FlutterGen.

Installation

Python

Window

$ https://www.python.org/downloads/

Mac OS

$ brew install python3

FlutterGen

Works with MacOS and Windows.

Window

$ pip install flutter_gen

Mac OS

$ pip3 install flutter_gen

Update via command line:

$ pip3 install -U flutter_gen

Usage

Run flutter_gen after the configuration pubspec.yaml.

$ flutter_gen -h

$ flutter_gen watch

Android Studio Plugin

Configuration file

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

# pubspec.yaml
# ...
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

Available Parsers

Assets

Just follow 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

These configurations will generate images.g.dart under the lib/generated/ directory by default.

Usage Example

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

Example results of assets/images/chip.jpg:

  • Images.chip is an implementation of AssetImage class.
  • Images.chip.image(...) returns Image class.
  • Images.chip.path just returns the path string.
Widget build(BuildContext context) {
  return Image(image: R.images.chip);
}

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

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

If you are using SVG images with flutter_svg you can use as:

Widget build(BuildContext context) {
  return R.images.paint.svg(
    width: 120,
    height: 120
  );
}
Example of code generated by FlutterGen

/// DO NOT EDIT. This is code generated via flutter_gen

import 'package:flutter/widgets.dart';
import 'package:flutter_svg/flutter_svg.dart';

const _assetsImagePath = 'assets/images';

class Images {
  static AssetGenImage get chip => const AssetGenImage('$_assetsImagePath/chip.png');
  static SvgGenImage get paint => const SvgGenImage('$_assetsImagePath/paint.svg');
}

class AssetGenImage extends AssetImage {
  const AssetGenImage(String assetName) : super(assetName);

  Image image({
    Key? key,
    ImageFrameBuilder? frameBuilder,
    ImageLoadingBuilder? loadingBuilder,
    ImageErrorWidgetBuilder? errorBuilder,
    String? semanticLabel,
    bool excludeFromSemantics = false,
    double? width,
    double? height,
    Color? color,
    BlendMode? colorBlendMode,
    BoxFit? fit,
    AlignmentGeometry alignment = Alignment.center,
    ImageRepeat repeat = ImageRepeat.noRepeat,
    Rect? centerSlice,
    bool matchTextDirection = false,
    bool gaplessPlayback = false,
    bool isAntiAlias = false,
    FilterQuality filterQuality = FilterQuality.low,
  }) {
    return Image(
      key: key,
      image: this,
      frameBuilder: frameBuilder,
      loadingBuilder: loadingBuilder,
      errorBuilder: errorBuilder,
      semanticLabel: semanticLabel,
      excludeFromSemantics: excludeFromSemantics,
      width: width,
      height: height,
      color: color,
      colorBlendMode: colorBlendMode,
      fit: fit,
      alignment: alignment,
      repeat: repeat,
      centerSlice: centerSlice,
      matchTextDirection: matchTextDirection,
      gaplessPlayback: gaplessPlayback,
      isAntiAlias: isAntiAlias,
      filterQuality: filterQuality,
    );
  }

  String get path => assetName;
}

class SvgGenImage {
  const SvgGenImage(this._assetName);

  final String _assetName;

  SvgPicture svg({
    Key? key,
    bool matchTextDirection = false,
    AssetBundle? bundle,
    String? package,
    double? width,
    double? height,
    BoxFit fit = BoxFit.contain,
    AlignmentGeometry alignment = Alignment.center,
    bool allowDrawingOutsideViewBox = false,
    WidgetBuilder? placeholderBuilder,
    Color? color,
    BlendMode colorBlendMode = BlendMode.srcIn,
    String? semanticsLabel,
    bool excludeFromSemantics = false,
    Clip clipBehavior = Clip.hardEdge,
  }) {
    return SvgPicture.asset(
      _assetName,
      key: key,
      matchTextDirection: matchTextDirection,
      bundle: bundle,
      package: package,
      width: width,
      height: height,
      fit: fit,
      alignment: alignment,
      allowDrawingOutsideViewBox: allowDrawingOutsideViewBox,
      placeholderBuilder: placeholderBuilder,
      color: color,
      colorBlendMode: colorBlendMode,
      semanticsLabel: semanticsLabel,
      excludeFromSemantics: excludeFromSemantics,
      clipBehavior: clipBehavior,
    );
  }

  String get path => _assetName;
}

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.g.dart under the lib/generated/ directory by default.

Usage Example

Text(
  'Hi there, I\'m FlutterGen',
  style: TextStyle(
    fontFamily: R.fonts.robotoMono,
    fontFamilyFallback: const [R.fonts.raleway],
  ),
Example of code generated by FlutterGen

/// DO NOT EDIT. This is code generated via flutter_gen

class FontFamily {
  FontFamily._();

  static const String raleway = 'Raleway';
  static const String robotoMono = 'RobotoMono';
}

Colors

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

FlutterGen can generate a Color class based on the color hex value.

#F5CB84
#955E1C

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

Usage Example

Text(
  'Hi there, I\'m FlutterGen',
  style: TextStyle(
    color: R.colors.hexF5CB84,
  ),
Example of code generated by FlutterGen

import 'package:flutter/material.dart';

class ColorName {
  ColorName._();
  
  static const Color hexF5CB84 = Color(0xFFF5CB84);
  static const Color hex955E1C = Color(0xFF955E1C);
}

Issues

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flutter_gen-2.2.0.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

flutter_gen-2.2.0-py3-none-any.whl (46.4 kB view details)

Uploaded Python 3

File details

Details for the file flutter_gen-2.2.0.tar.gz.

File metadata

  • Download URL: flutter_gen-2.2.0.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for flutter_gen-2.2.0.tar.gz
Algorithm Hash digest
SHA256 62738e95c7cbfcc9bcea0eebac1058bda53031219b3c600990feff7f0cc09cd0
MD5 0de16ad319da6cbcf212fc43683d7250
BLAKE2b-256 cb22fd2ec6231972918fe9976993b10e212bf0f651acc72b9943450cdc039159

See more details on using hashes here.

File details

Details for the file flutter_gen-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: flutter_gen-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 46.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for flutter_gen-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 498920e8a3d36b31aa2e74c6edc467e428282688e0274721c54d2e395a9ca7b3
MD5 bb9ac639d2d0d5e420763854362389d8
BLAKE2b-256 c7c1abaa9d887b48364f69a4487550f4b7212920d03940b43fb75a83f0d34562

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page