1 Commits

Author SHA1 Message Date
Caijinglong
88a48be157 修复了一个V1中的bug 2018-08-16 14:26:07 +08:00
2 changed files with 16 additions and 21 deletions

View File

@@ -46,14 +46,18 @@ class Generator {
var fieldList = template.fieldList; var fieldList = template.fieldList;
fieldList.forEach((filed) { fieldList.forEach((filed) {
if (filed is MapField) { if (filed is MapField) {
DefaultTemplate template = DefaultTemplate( DefaultTemplate template = DefaultTemplate(srcJson: json.encode(filed.map), className: filed.typeString);
srcJson: json.encode(filed.map), className: filed.typeString); if (version == Version.v1) {
template = V1Template(srcJson: json.encode(filed.map), className: filed.typeString);
}
templateList.add(template); templateList.add(template);
refreshTemplate(template); refreshTemplate(template);
} else if (filed is ListField) { } else if (filed is ListField) {
if (filed.childIsObject) { if (filed.childIsObject) {
DefaultTemplate template = DefaultTemplate( DefaultTemplate template = DefaultTemplate(srcJson: json.encode(filed.list[0]), className: filed.typeName);
srcJson: json.encode(filed.list[0]), className: filed.typeName); if (version == Version.v1) {
template = V1Template(srcJson: json.encode(filed.list[0]), className: filed.typeName);
}
templateList.add(template); templateList.add(template);
refreshTemplate(template); refreshTemplate(template);
} }
@@ -63,8 +67,7 @@ class Generator {
String get fileName => camelCase2UnderScoreCase(entityName); String get fileName => camelCase2UnderScoreCase(entityName);
static const String importString = static const String importString = "import 'package:json_annotation/json_annotation.dart';";
"import 'package:json_annotation/json_annotation.dart';";
String get header => """$importString String get header => """$importString

View File

@@ -108,27 +108,22 @@ class DefaultTemplate extends Template {
if (this is ListTemplate) { if (this is ListTemplate) {
return this; return this;
} }
return ListTemplate( return ListTemplate(srcJson: srcJson, className: className, delegateTemplate: this);
srcJson: srcJson, className: className, delegateTemplate: this);
} }
} }
class ListTemplate extends DefaultTemplate { class ListTemplate extends DefaultTemplate {
Template delegateTemplate; Template delegateTemplate;
ListTemplate( ListTemplate({String srcJson, String className = "Entity", this.delegateTemplate}) : super(className: className, srcJson: srcJson);
{String srcJson, String className = "Entity", this.delegateTemplate})
: super(className: className, srcJson: srcJson);
@override @override
String declare() { String declare() {
return _declareListMethod() + "\n" + delegateTemplate?.declare() ?? return _declareListMethod() + "\n" + delegateTemplate?.declare() ?? super.declare();
super.declare();
} }
String _declareListMethod() { String _declareListMethod() {
var listMethod = var listMethod = """List<$className> get${className}List(List<dynamic> list){
"""List<$className> get${className}List(List<dynamic> list){
List<$className> result = []; List<$className> result = [];
list.forEach((item){ list.forEach((item){
result.add($className.fromJson(item)); result.add($className.fromJson(item));
@@ -159,13 +154,11 @@ class ListTemplate extends DefaultTemplate {
} }
@override @override
List<Field> get fieldList => List<Field> get fieldList => FieldHelper(json.encode(json.decode(srcJson)[0])).getFields();
FieldHelper(json.encode(json.decode(srcJson)[0])).getFields();
} }
class V1Template extends DefaultTemplate { class V1Template extends DefaultTemplate {
V1Template({String srcJson, String className = "Entity"}) V1Template({String srcJson, String className = "Entity"}) : super(className: className, srcJson: srcJson);
: super(className: className, srcJson: srcJson);
@override @override
String interface() => ""; String interface() => "";
@@ -175,8 +168,7 @@ class V1Template extends DefaultTemplate {
var result = StringBuffer(); var result = StringBuffer();
result.writeln(super.method()); result.writeln(super.method());
result.writeln(); result.writeln();
result.write( result.write(" Map<String, dynamic> toJson() => _\$${className}ToJson(this);");
" Map<String, dynamic> toJson() => _\$${className}ToJson(this);");
return result.toString(); return result.toString();
} }
} }