Skip to content

Instantly share code, notes, and snippets.

View toshiossada's full-sized avatar

Toshi Ossada toshiossada

View GitHub Profile
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Generator",
"request": "launch",
"program": ".dart_tool/build/entrypoint/build.dart",
"type": "dart",
"args": [
"build"
targets:
$default:
builders:
dataclass_generator|data_class:
enabled: true
generate_for:
- lib/**/**_model.dart
builders:
data_class:
import: 'package:dataclass_generator/generators/data_class_generator.dart'
builder_factories: ['dataClassGenerator']
build_extensions: { '.dart': ['.dataclass.dart'] }
build_to: source
import 'package:analyzer/dart/element/element.dart';
import 'package:build/build.dart';
import 'package:source_gen/source_gen.dart';
import '../annotation/data_class.dart';
Builder dataClassGenerator(BuilderOptions options) =>
PartBuilder([DataClassGenerator()], '.dataclass.dart');
class DataClassGenerator extends GeneratorForAnnotation<DataClass> {
for (final field in fields) {
if (field.isStatic) continue;
if (field.setter != null) continue;
final fieldName = field.name ?? '';
final fieldType = field.type.getDisplayString();
params.add(
'$fieldType${fieldType.endsWith('?') ? '' : '?'} $fieldName',
);
constructor.add('$fieldName: $fieldName ?? this.$fieldName');
}
import 'package:analyzer/dart/element/element.dart';
import 'package:build/build.dart';
import 'package:source_gen/source_gen.dart';
import '../annotation/data_class.dart';
Builder dataClassGenerator(BuilderOptions options) =>
PartBuilder([DataClassGenerator()], '.dataclass.dart');
class DataClassGenerator extends GeneratorForAnnotation<DataClass> {
import 'package:analyzer/dart/element/element.dart';
import 'package:build/build.dart';
import 'package:source_gen/source_gen.dart';
import '../annotation/data_class.dart';
Builder dataClassGenerator(BuilderOptions options) =>
PartBuilder([DataClassGenerator()], '.dataclass.dart');
class DataClassGenerator extends GeneratorForAnnotation<DataClass> {
import 'package:build/build.dart';
import 'package:source_gen/source_gen.dart';
import '../annotation/data_class.dart';
Builder dataClassGenerator(BuilderOptions options) =>
PartBuilder([DataClassGenerator()], '.dataclass.dart');
class DataClassGenerator extends GeneratorForAnnotation<DataClass> {}
import 'package:source_gen/source_gen.dart';
import '../annotation/data_class.dart';
class DataClassGenerator extends GeneratorForAnnotation<DataClass> {}
import 'package:source_gen/source_gen.dart';
import '../annotation/data_class.dart';
class DataClassGenerator extends GeneratorForAnnotation<DataClass> {}