enum_class_generator 1.1.2

Enum Classes for Dart #

Build Status

Introduction #

Enum Classes provide classes with enum features and are part of Libraries for Object Oriented Dart.

Motivation #

Enums are very helpful in modelling the real world: whenever there are a small fixed set of options, an enum is a natural choice. For an object oriented design, though, enums need to be classes. Dart falls short here, so Enum Classes provide what's missing!

Design #

  • Constants have name and toString, can be used in switch statements, and are real classes that can hold code and implement interfaces
  • Generated values method that returns all the enum values in a BuiltSet (immutable set)
  • Generated valueOf method that takes a String

Using Enum Classes #

Enum Classes use the source_gen library for code generation. The typical way to use it is via a build.dart tool that you create for your project. When you run it, all the generated files are updated.

Here's what you need to do to use Enum Classes:

  1. Add a library dependency on enum_class to your pubspec.yaml
  2. Add a dev dependency on enum_class_generator to your pubspec.yaml
  3. Create a build.dart for your project. See example, below.
  4. Run pub run tools/build.dart whenever you need to update the generated files.
  5. To make an Enum Class, import package:enum_class/enum_class.dart then extend EnumClass.

See this example for a full project with a build.dart and an enum.

Features and bugs #

Please file feature requests and bugs at the issue tracker.

Changelog #

1.1.2 #

  • Regenerate .g.dart files for built_value 0.1.6.

1.1.1 #

  • Allow quiver 0.23.

1.1.0 #

  • Upgrade analyzer, build and source_gen dependencies.

1.0.0 #

  • API now stable.
  • Refactor generator to split into logical classes.
  • Fix "watch mode": check for duplicate identifiers per library.

0.2.2 #

  • Improve error output on failure to generate.

0.2.1 #

  • Add values and valueOf to generated mixin for use in Angular templates.
  • Make duplicate generated name detection more robust.
  • Check value and valueOf using analyzed nodes instead of raw source. Makes generation robust to newlines in these declarations.

0.2.0 #

  • Add mixin generation for use with Angular templates.

0.1.0 #

  • Upgrade to source_gen 0.5.0.
  • Breaking change; see example for required changes to build.dart.

0.0.6 #

  • Check for missing import statement.
  • Fix constraints for source_gen.

0.0.5 #

  • Fix generation across multiple files, allow reuse of generated identifiers.

0.0.4 #

  • Fail on dynamic fields.
  • Export BuiltSet.
  • Allow part statements with double quote.

0.0.3 #

  • Support multiple enums in one file by allowing arbitrary generated identifiers.

0.0.2 #

  • Add accurate dependencies on SDK, analyzer.

0.0.1 #

  • Generator, tests and example.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  enum_class_generator: ^1.1.2

2. Install it

You can install packages from the command line:

with pub:

$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:enum_class_generator/enum_class_generator.dart';
Awaiting analysis to complete.