Environment specific config generator for Dart and Flutter applications during CI/CD builds

Overview

Environment Config Generator

pub package

Environment specific config generator.

Allows to specify env configuration during CI/CD build.

Primarily created to simplify Flutter build configuration.

Features

  • flexible configuration for Config class generation
  • allows to specify pattern for field values
  • allows to define required and optional keys for generation
  • allows to export variables to .env file

Note for Flutter developers

This package still will be maintained, but if you are using Flutter version 1.17 and higher, consider using compile-time variables to configure your environments instead of this package. More about compile-time variables you can read here

Migration from 1.x.x to 2.x.x

In 1.x.x path for .env was generated against lib/ folder. Starting from 2.x.x path for .env file is generated against your root app folder.

So by default .env file will be generated alongside with pubspec.yaml and other root files.

Table of contents

Getting Started

Install package as dependency.

Create environment_config.yaml or update package.yaml file with following code

Note This is an example with ALL possible params

environment_config:
  path: environment_config.dart # optional, result file path against `lib/` folder
  dotenv_path: .env # optional, result file path for .env file against project root folder
  class: EnvironmentConfig # optional, class name
  dev_extension: # optional, by default undefined, allows to specify command option to use extension
  
  fields: # set of fields for command
    some_key: # key name
      type: # optional, default to 'String'
      short_name: # optional, short name for key during command run
      const: # optional, default to TRUE
      pattern: # optional, specified pattern for key value, use __VALUE__ to insert entered value anywhere in the pattern
      default: # optional, default value for key, if not provided key will be required during command run
      dotenv: # optional, default to FALSE, if this field should be added to .env file
      config_field: # optional, default to TRUE, if this field should be added to Dart file
      env_var: # optional, global environment variable name
      static: # options, default to TRUE, if this field should be static, if FALSE, `const` will be be ignored
      
  imports: # optional, array of imports, to include in config file
    - package:some_package
      
  extensions: # set of extensions for default field list
    some_extension: # extension name
      some_key:
        const: # optional, overrides `const` value for the field
        pattern: # optional, overrides `pattern` value for the field
        default: # optional, overrides `default` value for the field
        env_var: # optional, overrides `env_var` value for the field
        
    imports: # optional, adds set of imports to main configulration
      - package:some_other_package
      

Run pub get to install dependencies.

After config is specified in YAML file run following command

pub run environment_config:generate --some_key=some_value

Or for flutter project

flutter pub run environment_config:generate --some_key=some_value

This command with generate file, that was specified in path key with class, fields and name specified in yaml config.

Import this file into your application and use it.

Note: It's recommended to add generated config files to .gitignore

Why this package is needed?

This package allows to integrate config generation based on environment in an easy way.

Unlike most env specific configurations this package can be added to CI/CD build process to generate config file with values, that specific to particular env, without need to specify your Prod credentials anywhere except your build process.

Also reading this values doesn't require async process, that will decrease you app start time

Obviously this package doesn't obfuscate or encrypt config values, but generated Dart file will be build and obfuscated with rest of your mobile application code. If you want to secure your sensitive information you can use encrypted values and pattern key to wrap it with your decrypt library. But overall keep in mind that there is no way to fully secure your app from reverse engineering

Also this package allows to generate .env file with same key value pairs

Config

Command options

During command run YAML file will be parsed to define keys for command.

  • config - path to custom yaml file with package configuration
  • config_extension - name of the extension, that should be used for config generation
  • any key name, that specified in yaml file under fields key
  • dev_extension key name, allows to use this key as bool flag

For example. If you have next yaml config

environment_config:
  fields:
    key_one:
      short_name: o #optional
    key_two:
      short_name: t #optional

You will be able tou run command with following options

flutter pub run environment_config:generate --key_one=something --key_two=other

Or (if short_name is specified)

flutter pub run environment_config:generate -o something -t other

Both commands will generate same dart class

class EnvironmentConfig {
  static const String key_one = 'something';

  static const String key_two = 'other';
}

Multiple config files

If you want to use different config YAML files for different environment or you need to generate multiple configurations, use config key during command run

flutter pub run environment_config:generate --config=path/to/file.yaml

Class configuration

Class and file can be configured with next options

  • path - path to file against lib folder, by default it's environment_config.dart
  • dotenv_path - path to file against root app folder, by default it's .env
  • class - class name, by default will be generated based on file name
  • const - optional, defines if class constructor should be defined as const.
  • imports - array of imports to add to generated config file
  • fields- set of fields, that should be defined in configuration files
  • dev_extension - defines which extension should be treated as dev extension, if specified - it's value can be used during command run as bool flag
  • extensions - set of configurations, that can extend default config

If class is not specified value for class name will be generate based on file name in path field. It will convert snake_case into CamelCase.

Field dotenv_path will be used only if at least one field contains dotenv: true

Config Examples

Custom path example

environment_config:
  path: config/some_config.dart
  
  ...

Will create file with name some_config.dart in lib/config folder with following class

class SomeConfig {
  ///
}

Custom class name example

environment_config:
  path: config/some_other_config_file.dart
  class: OtherClass
  
  ...

will create file with name some_other_config_file.dart in lib/config folder with following class

class OtherClass {
  ///
}

Class with const constructor

environment_config:
  class: OtherClass
  const: true
  
  ...

will create config with following class

class OtherClass {
  const OtherClass();
  ///
}

If const is used it will force class to have const constructor or without it.

Field configuration

To define fields for config definition, provide key set under fields key.

Configuration accepts any amount of field keys. At least one field should be specified

Note: config key can't be used for field definition. It's reserved by command itself to define path to custom config yaml file

Note If dev_extension is defined, its value can't be used as field name

Each field accepts next params, each param is optional

  • type - field type, default to String
  • const - if field should be const, default to TRUE. If FALSE, final modifier will be used instead
  • static - if field should be static, default to TRUE. If FALSE, const option will be ignored
  • pattern - pattern for field value. Inside value for this field __VALUE__ can be used. It will be replaced with actual entered value or with default value
  • default - default value for the field. If not specified, field will be treated as required
  • short_name - short key name, that can be used during command run instead of full field name. Accepts 1 symbol values only
  • dotenv - bool flag, if TRUE this field will be added to .env file.
  • env_var - environment global variable name
  • config_field - default to TRUE, indicates if this field should be defined in Dart class config

If you want to generate .env file in addition to class config, at least ONE key should have dotenv to be TRUE. Otherwise .env file won't be generated

If field contains dotenv: false (which is default state) and config_field: false field will be ignored

Note If field config doesn't have default key specified it will be treated as required. Which means that you need provide value for your field in one of the following way:

  • argument during command run
  • global env variable, if env_var is specified

Note: If pattern key is specified and const is TRUE ensure your pattern also contains const modifier like this

environment_config:
  fields:
    some_key:
      pattern: const CustomClass('__VALUE__')

Fields config examples

Pattern example

environment_config:
  fields:
    numberValue:
      type: num
      const: false
      short_name: o #optional
    customClassValue:
      type: CustomClass
      pattern: const CustomClass('__VALUE__')

This config allows to run next command

flutter pub run environment_config:generate -o 345 --customClassValue=something

It will generate following class

class EnvironmentConfig {
  static final num numberValue = 345;

  static const CustomClass customClassValue = const CustomClass('something');
}

DotEnv example

To create .env at least one key should have dotenv: true attribute

environment_config:
  fields:
    first_key: # define field only in Dart class
      type: num
    second_key:
      dotenv: true # will define field in Dart and in `.env`
    third_key:
      dotenv: true # will define field in `.env`
      config_field: false # will exclude field from Dart config file

Note If dotenv: false and config_field: false this field won't be added to .env and Dart config class

This command

flutter pub run environment_config:generate --first_key=123 --second_key=456 --third_key=789

will generate Dart class config in lib/ folder

class EnvironmentConfig {
  const EnvironmentConfig();

  static const num first_key = 123;

  static const String second_key = '456';
}

and following .env in your root app folder

second_key=456
third_key=789

Global environment variable example

If you want to use value from environment variable, just define key env_var.

environment_config:
  fields:
    first_key:
      env_var: PATH

In that way generator will try to get value from PATH global variable for your key.

Generator will use next priority:

  • value from command arguments
  • value from environment variable PATH
  • value from Extensions default key (if extension was used that has default key)
  • value from default key (if it was specified)

Extensions

Extensions allows you to define set of override rules for fields and imports.

Primarily extensions are needed to override main configuration and provide some specific settings for environment like dev. That is why it allows to override just specific set of configuration keys for specific field:

  • const
  • pattern
  • default
  • env_var

Extension won't override other field keys to keep config class signature consistent (if you need to add other keys in this list, feel free to open an issue for that).

Also extension allows you to define import list in addition to default config. If extension is used - import list will be merged from default config and extension config

Basic Extension config usage

To use extension define it in config:

environment_config:
  fields:
    first_key:
    
  imports:
    - some:package
      
  extensions:
    dev: # your extension name
      fields:
        first_key:
          default: some value
      
      imports:
        - other:package

Then if you run command like this

flutter pub run environment_config:generate

It will throw an error that first_key is required. But you use extension

flutter pub run environment_config:generate --config-extension=dev

It will generate following config class

import 'some:package';
import 'other:package';

class EnvironmentConfig {
  static const String first_key = 'some value';
}

Development Extension example

Note Don't use development extension in your automated build tools. There is a plan add verbose command run support eventually.

Most common case when extension can be used is for your Dev environment. In that way your default config will ensure that all fields are provided by build tool, and in same time - to generate config for dev environment, you won't need to define values for your fields.

To enable dev extension just add dev_extension

environment_config:
  dev_extension: dev # `dev` here is the name of you extension
  fields:
    first_key:
    
  imports:
    - some:package
      
  extensions:
    dev:
      fields:
        first_key:
          default: some value
      
      imports:
        - other:package

Then you can run command like this, where dev is key name from dev_extension

flutter pub run environment_config:generate --dev

Integration with CI/CD

To add config generation into any CI/CD, add command execution after deps are installed and before build run.

flutter pub run environment_config:generate --<key_name>=<key_value>

If your build tool allows to specify environment variables (for example like Code Magic does), you can specify all needed key/values there. And in YAML config just define env_var in keys, where you want to use them with same variable name like in your build tool. If all keys has env_var specified and your build tool also provides all needed values, you can run generator just like this.

flutter pub run environment_config:generate

Integration with other packages

Note Next package was selected just for an example. You can choose any other package that works with .env file

Support of .env generation was primarily added to generate config for packages that relies on it.

For example .env generation feature can be used with flutter_config package. This particular package allows you to pass environment variables from .env into your native layer like your plugins or Android/iOS app configuration.

For more info see this docs for Android or iOS

Changelog

Please see the Changelog page to know what's recently changed.

Bugs/Requests

If you encounter any problems feel free to open an issue. If you feel the library is missing a feature, please raise a ticket on Github and I'll look into it. Pull request are also welcome.

Comments
  • yaml dependency with flutter 2.0.4

    yaml dependency with flutter 2.0.4

    Flutter has now marked version 2.0.4 as stable https://flutter.dev/docs/development/tools/sdk/releases

    in my pubspec.yaml the below two dependencies are included environment_config: ^2.2.5 flutter_launcher_icons: ^0.9.0

    When i execute flutter pub get I am getting the below error when using flutter 2.0.4

    Because environment_config >=2.2.2 depends on yaml ^2.0.0 and flutter_launcher_icons >=0.9.0 depends on yaml ^3.0.0-nullsafety.0, environment_config >=2.2.2 is incompatible with flutter_launcher_icons >=0.9.0. So, because myapp depends on both environment_config ^2.2.5 and flutter_launcher_icons ^0.9.0, version solving failed.

    Are there any plans to update yaml dependency?

    opened by danielle-carr 7
  • Please use version contstraint in pubspec.yaml

    Please use version contstraint in pubspec.yaml

    this package is hard to use while developing angulardart because of conflicting dependency.

    as stated in dart.dev, For a library package that you want users to reuse, though, it is important to specify version constraints.

    opened by alfinbi 7
  • Failed to precompile environment_config:generate

    Failed to precompile environment_config:generate

    precompiling environment_config is failing, output of flutter --version and flutter pub run environment_config:generate below:

    Flutter 1.20.3 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision 216dee60c0 (8 days ago) • 2020-09-01 12:24:47 -0700
    Engine • revision d1bc06f032
    Tools • Dart 2.9.2
    
    
    
    flutter pub run environment_config:generate
    Precompiling executable...
    Failed to precompile environment_config:generate:
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:32:8: Error: Error when reading '../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.1.8/lib/meta_meta.dart': No such file or directory
    import 'package:meta/meta_meta.dart';
           ^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1456:43: Error: Type 'TargetKind' not found.
      bool _isValidTarget(AstNode target, Set<TargetKind> kinds) {
                                              ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1499:7: Error: Type 'TargetKind' not found.
      Set<TargetKind> _targetKindsFor(ElementAnnotation annotation) {
          ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1843:14: Error: Type 'TargetKind' not found.
    extension on TargetKind {
                 ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1456:43: Error: 'TargetKind' isn't a type.
      bool _isValidTarget(AstNode target, Set<TargetKind> kinds) {
                                              ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1458:29: Error: The getter 'TargetKind' isn't defined for the class 'BestPracticesVerifier'.
     - 'BestPracticesVerifier' is from 'package:analyzer/src/error/best_practices_verifier.dart' ('../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'TargetKind'.
          return kinds.contains(TargetKind.classType) ||
                                ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1459:26: Error: The getter 'TargetKind' isn't defined for the class 'BestPracticesVerifier'.
     - 'BestPracticesVerifier' is from 'package:analyzer/src/error/best_practices_verifier.dart' ('../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'TargetKind'.
              kinds.contains(TargetKind.type);
                             ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1462:26: Error: The getter 'TargetKind' isn't defined for the class 'BestPracticesVerifier'.
     - 'BestPracticesVerifier' is from 'package:analyzer/src/error/best_practices_verifier.dart' ('../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'TargetKind'.
              kinds.contains(TargetKind.library);
                             ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1464:29: Error: The getter 'TargetKind' isn't defined for the class 'BestPracticesVerifier'.
     - 'BestPracticesVerifier' is from 'package:analyzer/src/error/best_practices_verifier.dart' ('../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'TargetKind'.
          return kinds.contains(TargetKind.enumType) ||
                                ^^^^^^^^^^
    ../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart:1465:26: Error: The getter 'TargetKind' isn't defined for the class 'BestPracticesVerifier'.
     - 'BestPracticesVerifier' is from 'package:analyzer/src/error/best_practices_verifier.dart' ('../../Library/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.40.1/lib/src/error/best_practices_verifier.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'TargetKind'.
              kinds.contains(TargetKind.type);
                             ^^^^^^^^^^
    pub finished with exit code 1```
    opened by liamjobrien 6
  • Error on Flutter 2.2.0

    Error on Flutter 2.2.0

    Failed to precompile environment_config:generate: /root/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:1600:40: Error: Getter not found: 'topLevelVariable'. return kinds.contains(TargetKind.topLevelVariable); ^^^^^^^^^^^^^^^^ /root/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:2024:23: Error: Getter not found: 'topLevelVariable'. case TargetKind.topLevelVariable: ^^^^^^^^^^^^^^^^ /root/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:2024:23: Error: Type 'dynamic' of the case expression is not a subtype of type 'TargetKind' of this switch expression.

    • 'TargetKind' is from 'package:meta/meta_meta.dart' ('/root/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0/lib/meta_meta.dart'). case TargetKind.topLevelVariable: ^ /root/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:2001:13: Context: The switch expression is here. switch (this) { ^ pub finished with exit code 1
    opened by Bilonik 4
  • Is it possible to define a bool in the config file?

    Is it possible to define a bool in the config file?

    Hey, awesome package!

    Have a question:

    Is it possible to define a bool in the config file?

    environment_config:
      path: environment_config.dart
    
      fields:
        fake_api:
          type: bool
          const: TRUE
          default: false
          config_field: TRUE
          static: TRUE
    

    Currently, it crashes during config parsing with an error

    type 'bool' is not a subtype of type 'String'

    Thanks!

    version: 2.2.2

    bug 
    opened by JenshenSoft 4
  • Dependencies conflict

    Dependencies conflict

    Hello. Have a conflict with build_runner 1.10.6

    So, because project depends on both environment_config ^2.2.4 and build_runner ^1.10.6, version solving failed.)

    bug 
    opened by Auuufff 3
  • Environment variables produce invalid syntax

    Environment variables produce invalid syntax

    Perhaps I am doing something incorrect here.

    environment_config:
      path: environment.dart
      class: Environment
      fields:
        api:
          type: String
          short_name: a
          pattern: 'https://__VALUE__'
          env_var: API_DOMAIN
    

    Set your environment variable(s)

    export API_DOMAIN="api.local"
    

    Then run

    pub run environment_config:generate
    

    Dartfmt will fail because of invalid syntax.

    ❯ pub run environment_config:generate
    Precompiling executable... (7.1s)
    Precompiled environment_config:generate.
    Could not format because the source could not be parsed:
    
    line 1, column 46: Expected to find ';'.
      ╷
    1 │ class Environment {static const String api = https://api.local;
      │                                              ^^^^^
    

    As a work around the following works as expected.

    environment_config:
      path: environment.dart
      class: Environment
      fields:
        api:
          short_name: a
          env_var: API_DOMAIN
          customClassValue:
            type: String
            pattern: 'https://__VALUE__'
    
    opened by binarypie 3
  • Add lock fine

    Add lock fine

    Add lock file generation to define diff between specified fields in local env and new fields to define set of required fields during verbose run.

    Blocked by #8

    enhancement 
    opened by TatsuUkraine 1
  • Add ability to build just `.env` file

    Add ability to build just `.env` file

    Some variants:

    • add key exclude (default to false) to field key to exclude this field from Dart class, with dotenv: true this key will be added just to .env file
    • add key to config generate_class (default to true), that will exclude Dart class generation
    enhancement 
    opened by TatsuUkraine 1
  • Output path

    Output path

    Hi! This is more like a question, is possible to have an output path param? I need to normalize the param for windows, but passing from the file is not that easy. Is it possible?

    opened by brenoasm 3
  • Multiple dotenv_path s

    Multiple dotenv_path s

    It would be very nice to have the option to define multiple dotenv_path in the YAML. This is very useful for providing fields to many native layers. But currently it is only possible to provide a .env file for either the Android or the iOS Project, since dotenv_path cannot be defined multiple times.

    opened by DeveloperZoneIO 13
  • feature suggestion: export to .env change to import from .env

    feature suggestion: export to .env change to import from .env

    It is so confusing that this package support a feature as export to .env.

    Where can we get the env variables locally or in cloud? It must be some common settings, like .env files or CI variables. It is unnecessary to export it, but I often need to import from a .env that is ignored by git and different in local env and cloud env.

    With import feature, locally I can use .env file to export the env variables, and user CI env variables in CI pipelines.

    opened by Guo-Zhang 1
  • Null dev_extension throws error

    Null dev_extension throws error

    Hey, I am not sure if this is intentional or not but leaving the default line

      dev_extension: # optional, by default undefined, allows to specify command option to use extension
    

    in environment_config.yaml throws an exception when running dart run environment_config:generate:

    type 'Null' is not a subtype of type 'String'
    

    However clearing this line fixes this issue.

    opened by gilnobrega 1
  • Use builders to run the generator instead of just as a script.

    Use builders to run the generator instead of just as a script.

    I have many builders that I often have to run to generate files for me. Usually all I have to do is run dart pub run build_runner build to generate the files, but then I have to go back and run dart pub run environment_config:generate for this one to work.

    With this PR, all you need to do it configure your arguments in the build.yaml (see example/build.yaml) file, and when you run:

    flutter pub run build_runner build
    

    dart will run this generator along with other generators you defined in the build.yaml file.

    opened by smac89 6
Releases(3.0.0)
Owner
Denis Beketsky
Denis Beketsky
A better/safer way to handle environment variables in Flutter.

Envify A better and probably safer way to handle environment variables in Flutter. To read why this is better/safer in details, skip to the motivation

Frenco 96 Nov 5, 2022
Simply extract required values from specific paths in a Map or a List

extract values from Map/List using dot-seprated strings you don't have to cast multiple times to fetch a simple values, this is very useful while working with i.e json data

Mohammed Al Ashaal 5 Nov 18, 2022
🚀The Flutter dart code generator from zeplin. ex) Container, Text, Color, TextStyle, ... - Save your time.

Flutter Gen Zeplin Extension ?? The Flutter dart code generator from zeplin. ex) Container, Text, Color, TextStyle, ... - Save your time. ⬇ 1.1k Getti

NAVER 49 Oct 12, 2022
OpenAPI generator for Dart & Flutter

Fantom Fantom is a cli tool for generating API layer based on OpenAPI Spec. Usage Install fantom $ dart pub global activate fantom Generate API client

6thSolution 13 Oct 18, 2022
OpenAPI generator for Dart & Flutter

Fantom Fantom is a cli tool for generating API layer based on OpenAPI Spec. Usage Install fantom $ dart pub global activate fantom Generate API client

REKAB 13 Oct 18, 2022
Destiny is a new, mock-data generator for Dart/Flutter

Destiny is a new, mock-data generator for Dart/Flutter. It uses static methods couched in a destiny namespace as the API.

Aditya Kishore 11 Sep 16, 2022
Dart Code Generator for generating mapper classes

Smartstruct - Dart bean mappings - the easy nullsafe way! Code generator for generating type-safe mappers in dart, inspired by https://mapstruct.org/

Nils 28 Nov 29, 2022
The Dart code generator for your package versions. 🎯

The Dart code generator for your package versions. There is no way to get the package version from the code in the Dart ecosystem. Installation Add bu

Daichi Furiya 12 Dec 14, 2022
Dart R-file generator for build_runner

r_resources This package is made for R-file code generation using build_runner.

Ivanov Nikita 0 Dec 17, 2021
Arissounddart - a Command-line SoundSprite generator for Dart

SoundDart SoundDart is a Command-line SoundSprite generator for Dart. It require

Behruz Hurramov 1 Jan 9, 2022
Starter project and code generator for Flutter/Redux

Flutter Redux Starter/Code Generator Videos Short video ~ 1 minute Long video ~ 10 minutes We're using this approach to develop the Flutter app for In

Hillel Coren 278 Dec 12, 2022
Swagger/OpenAPI code generator based on Chopper and JsonAnnotation for Flutter

Code partially generated with chopper ?? Build dart types from Swagger/OpenAPI schemas SwaggerDartCodeGenerator is a code generator that looks for *.s

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

The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs. Inspired by SwiftGen. Motivation Using asset path str

FlutterGen 1.1k Jan 6, 2023
A Flutter curl-command generator for Dio

curl_logger_dio_interceptor A Flutter curl-command generator for Dio. Easily test your Flutter-made requests in your favorite terminal or even in Post

null 7 Nov 17, 2022
Flutter Word generator

wordpair_generator A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you start

Aristide Sabi 0 Dec 3, 2021
Random color generator for Flutter

Random color generator Pub link: https://pub.dartlang.org/packages/random_color This library will generate random colors that are visually pleasing an

Luka Knezic 56 Jun 13, 2022
A Flutter Word generator App to improve English vocabulary

Word generator App to improve English vocabulary: Add English words you don't know and their translation, then you need to answer what is the translat

Gustavo Bonassa 1 Dec 12, 2021
A certificate generator app developed in Flutter with love.

Holden Certificate Generator made with Flutter. Dependencies spreadsheet_decoder path_provider file_picker pdf_viewer_plugin pdf permission_handler sh

null 20 Jan 4, 2023