dart_writer

Creator: coderz1093

Last updated:

0 purchases

dart_writer Image
dart_writer Images

Languages

Categories

Add to Cart

Description:

dart writer

DartWriter #
DartWriter provides API to generate Dart source code. It can make your job easier while developing flutter/dart tools. You can also generate Flutter UI code.
Hello World Example #
var context = EditorContext(enableDartFormatter: true);
var code = Method(
name: 'main',
returnType: 'void',
statements: [
Call('print',
argument: Argument([
ArgumentItem("'Hello World!'")
])
),
Return('0')
]
);
print(context.build([code]));
copied to clipboard
Generated as below:
void main() {
print('Hello World!');
return 0;
}
copied to clipboard
Flutter Stateless Widget Example #
Input
{
"as": "Scaffold",
"appBar": {
"as": "AppBar",
"title": {
"as": "Text",
"params": [
"'Ahmet'"
]
},
"centerTitle": "false"
},
"body": {
"as": "Center",
"child": {
"as": "Row",
"children": [
{
"as": "Icon",
"params": ["Icons.add"],
"color": "Colors.red"
},
{
"as": "Text",
"params": ["'Ahmet'"],
"textAlign": "TextAlign.center"
}
]
}
}
}
copied to clipboard
Code:
var context = EditorContext(enableDartFormatter: true);
var dartHelper = DartHelper.instance;
Map map = jsonDecode(json);

var homePage = Class('HomePage',
baseClass: 'StatelessWidget',
methods: [
Annotation('override'),
Method(
name: 'build',
returnType: 'Widget',
param: Parameter([
ParameterItem('BuildContext context'),
]),
statements: [ Return(dartHelper.getCodeFromMap(map)) ]
)
]
);

print(context.build([
Import('package:flutter/material.dart'),
homePage
]));
copied to clipboard
Generated ui code:
import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Ahmet'), centerTitle: false),
body: Center(
child: Row(children: [
Icon(Icons.add, color: Colors.red),
Text('Ahmet', textAlign: TextAlign.center)
])));
}
}
copied to clipboard
Installation #
In the pubspec.yaml of your Flutter / Dart project, add the following dependency:
dependencies:
...
dart_writer: any
copied to clipboard
In your library file add the following import:
import 'package:dart_writer/dart_writer.dart';
copied to clipboard
API Documentation #

Documentation Guideline

Conditions

If
Else If
Else


Loops

For
Foreach
While


Statements

Assignment
Call
Return


OOP Concepts

Class

Attributes
Constructors
Methods

Method
Getter
Setter




Interface


Other(#other)

Annotations
Import
Enum
Argument
Parameter





Conditions #
Method(
name: 'getMin',
returnType: 'int',
statements: [
Assign('var num1', '5'),
Assign('var num2', '10'),
If(condition: 'num1 < num2', statements: [Return('num1')]),
ElseIf(condition: 'num1 == num2', statements: [Return('num1')]),
Else(statements: [Return('num2')])
]
)
copied to clipboard
Generated code:
int getMin() {
var num1 = 5;
var num2 = 10;
if (num1 < num2) {
return num1;
} else if (num1 == num2) {
return num1;
} else {
return num2;
}
}
copied to clipboard
Loops #
Method(
name: 'loops',
returnType: 'void',
statements: [
For('i = 0', 'i < 5', 'i++',
statements: [RawCode('print(i);')]
),
ForEach('item', 'userList',
statements: [
Return('UserCard(item)')
]
),
While('i < 5',
statements: [ RawCode('print(i);'), Assign('i', 'i + 1')]
)
]
)
copied to clipboard
Generated code:
void loops() {
for (var i = 0; i < 5; i++) {
print(i);
}
for (var item in userList) {
return UserCard(item);
}
while (i < 5) {
print(i);
i = i + 1;
}
}
copied to clipboard
Statements #
Method(name: 'do', returnType: 'int',
statements: [
Assign('var i', '5'),
Assign('var name', Call('getName')),
Return('i')
]
)
copied to clipboard
Generated code:
int do() {
var i = 5;
var name = getName();
return i;
}
copied to clipboard
OOP Concepts #
Class



Parameter
Description
Output




String className
Class Name
class Bird


bool isAbstract?
Generating abstract class if value is true
abstract class Animal or class Animal


List<Constructors>?
more than one constructor can be defined
Singleton._init() , Singleton({this.a}) : super(a)


String? baseClass
extends to base class
class Bird extends Animal


List<String>? mixins
indicates the use of mixins
class Bird with Feather, Walk


List<String>? interfaces
implements interface
class Bird implements Flyable, Crowable


List<Attribute>? attributes;
attributes of class
final String name;


List<IExpression>? methods;
all methods of class such as Method, Getters, Settters
final String name;



Constructor



Parameter
Description
Output




String className
Class Name
class Singleton


String consturctorName?
if value is null Default constructor. if not value, named constructor.
Singleton._init() , Singleton({this.a})


Parameter? param
Constructor parameters
Singleton({required this.a}), Singleton(this.a, {this.b})


String? superArgument
call constructor of base class
Singleton(this.a) : super(a)


String? modifier
modifier of constructor such as factory
factory Singleton()



Attribute



Parameter
Description
Output




String name
Attribute Name
name


String type
Attribute type
String name


String? modifiers
Attribute modifiers
final String name


String? value
initialize value to attribute
final String name = 'Ahmet'



Methods #
Method



Parameter
Description
Output




String name
Method Name
walk


String returnType?
Return type
void walk


Parameter? param
Method parameters
void walk({required int step})


bool? isAsync
is async method?
void walk({required int step}) async {}


String? modifier
Modifier of method such as static
static void walk


List<IExpression>? statements
body of method.
Code here...



Getter



Parameter
Description
Output




String name
Getter Name
get walk


String returnType?
Return type
void get walk


String? modifier
Modifier of method such as static
static void get name


List<IExpression>? statements
body of method.
Code here...



Setter



Parameter
Description
Output




String name
Getter Name
set name


String param?
Return type
set name(String name)


List<IExpression>? statements
body of method.
Code here...



Example Class Code:
Class(
'Bird',
baseClass: 'Animal',
interfaces: ['Flyable', 'Crowable'],
mixins: ['Feather', 'Walk'],
attributes: <Attribute> [
Attribute(modifiers: 'final', type: 'String', name: 'name'),
],
constructors: <Constructor> [
Constructor(
className: 'Bird',
constructorName: 'fromName',
param: Parameter([ParameterItem('this.name', isRequired: true, isNamed: true)]),
superArgument: Argument([ArgumentItem('name')])
),
],
methods: [
Method(
name: 'onFly',
returnType: 'double',
param: Parameter([ParameterItem('double height')]),
statements: [Return('height * 2')]
),
]
);
copied to clipboard
Generated code:
class Bird extends Animal with Feather, Walk implements Flyable, Crowable {
final String name;

Bird.fromName({required this.name}) : super(name);

double onFly(double height) {
return height * 2;
}
}
copied to clipboard
Interface #



Parameter
Description
Output




String name
Interface Name
interface Flyable


String? baseClass
extends class
interface Flyable extends Breathable


List<IExpression>? prototypes
abstract methods of interface
void doFly();



Example Interface
Interface('Flyable',
baseClass: 'Breathable',
prototypes: [
Method(name: 'doFly', returnType: 'void')
]
)
copied to clipboard
Generated code:
abstract class Flyable extends Breathable {
void doFly();
}
copied to clipboard
Other #



Expression
Example Code
Output




Annotation
Annotation('override')
@override


Import
Import('package:dart_writer/dart_writer.dart', as: 'writer')
import 'package:dart_writer/dart_writer.dart' as writer;


Enum
Enum('Roles', enums: ['USER', 'ADMIN', 'DEVELOPER'])
enum Roles { USER, ADMIN, DEVELOPER }


Paramter
Parameter([ParameterItem('String name', isNamed: true, isRequired: true)])
{required String name}


Argument
Argument([ArgumentItem("'Star'", name:'surname'])
surname: 'Star'


RawCode
RawCode('var name = user?.name ?? "'ahmet'"')
[Output]: var name = user?.name ?? 'ahmet'



TASK LIST #

❌ Unit Tests

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.