dart_code 0.1.10 copy "dart_code: ^0.1.10" to clipboard
dart_code: ^0.1.10 copied to clipboard

A package for creating valid and formatted code, e.g. when writing code builders.

dart_code #

A package for creating valid and formatted code, e.g. when writing code builders.

Usage #

The dart_code package provides a Dart code model that can be converted to code using the toString() method.

Example of a main function with a print statement:

import 'package:dart_code/dart_code.dart';

main() {
  print(Function.main(Statement.print(Expression.ofString('Hello World.'))));


main() {
  print('Hello World.');

Use the CodeFormatter class for alternative formatting. It uses the official (dartfmt)[https://github.com/dart-lang/dart_style/wiki/Formatting-Rules] with the dart_style package You can use the following CodeFormatter constructor parameters:

  • String lineEnding
  • int pageWidth
  • int indent

Note that this formatter may throw parsing exceptions. You can use the [CodeFormatter.unFormatted] method when you need a partial code that can not be parsed by the Dart formatter

Alternative formatting example:

import 'package:dart_code/dart_code.dart';

main() {
  print(CodeFormatter(pageWidth: 20).format(
      Function.main(Statement.print(Expression.ofString('Hello World.')))));


main() {
      'Hello World.');

An example of a library with unique imports:

import 'package:dart_code/dart_code.dart';

main() {
   print(Library(classes: [
       superClass: Type('Person', libraryUri: 'package:my_package/person.dart'),
       implements: [
         Type('Skills', libraryUri: 'package:my_package/skills.dart')
       abstract: true,


import 'package:my_package/person.dart' as i1;
import 'package:my_package/skills.dart' as i2;

abstract class Employee extends i1.Person implements i2.Skills {}

For more examples see: https://github.com/efficientyboosters/dart_code/tree/main/test

Most important classes to use #

You will probably be using the following code modeling classes:

  • Library
    • Function
    • Class
      • Field
      • Constructor
      • Method
  • Expressions (for code that results in a value)
  • Statement (for code that does something)
  • Comment
  • DocComment
  • Annotation
  • Code (for anything else)

Inspiration #

This package was inspired by the code_builder package.

  • dart_code is simpler and likely less complete
  • dart_code classes can be extended (no fluent builders used) so that code model logic can be written inside the constructor of the extended classes.
  • dart_code allows you to directly use the toString() method on the code classes or use the CodeFormatter class for alternative formatting settings.
pub points


unverified uploader

A package for creating valid and formatted code, e.g. when writing code builders.

Repository (GitHub)
View/report issues


API reference


BSD-3-Clause (LICENSE)




Packages that depend on dart_code