diff --git a/lib/json_generator.dart b/lib/json_generator.dart index fe73c83..1f92cef 100644 --- a/lib/json_generator.dart +++ b/lib/json_generator.dart @@ -10,6 +10,7 @@ String entityName = null; bool useJsonKey = true; bool isCamelCase = true; +bool isStaticMethod = true; var downloadFileName = ""; @@ -61,6 +62,7 @@ void main() async { InputElement eJsonKey = querySelector("#use_json_key"); InputElement eCamelCase = querySelector("#camelCase"); + InputElement eUseStatic = querySelector("#use_static"); TextAreaElement result = querySelector("#result"); RadioButtonInputElement v0 = querySelector("#v0"); RadioButtonInputElement v1 = querySelector("#v1"); @@ -125,6 +127,17 @@ void main() async { refreshData(); }); + eUseStatic.checked = isStaticMethod; + eUseStatic.onInput.listen((event) { + isStaticMethod = eUseStatic.checked; + refreshData(); + }); + + querySelector("#useStaticLabel").onClick.listen((event) { + eUseStatic.checked = !eUseStatic.checked; + refreshData(); + }); + refreshData(); querySelector("#copy").onClick.listen((event) { diff --git a/lib/template.dart b/lib/template.dart index a420997..e5eb165 100644 --- a/lib/template.dart +++ b/lib/template.dart @@ -97,6 +97,9 @@ class DefaultTemplate extends Template { @override String method() { + if (main.isStaticMethod) { + return " static $className fromJson(Map srcJson) => _\$${className}FromJson(srcJson);"; + } return " factory $className.fromJson(Map srcJson) => _\$${className}FromJson(srcJson);"; } @@ -108,22 +111,27 @@ class DefaultTemplate extends Template { if (this is ListTemplate) { return this; } - return ListTemplate(srcJson: srcJson, className: className, delegateTemplate: this); + return ListTemplate( + srcJson: srcJson, className: className, delegateTemplate: this); } } class ListTemplate extends DefaultTemplate { Template delegateTemplate; - ListTemplate({String srcJson, String className = "Entity", this.delegateTemplate}) : super(className: className, srcJson: srcJson); + ListTemplate( + {String srcJson, String className = "Entity", this.delegateTemplate}) + : super(className: className, srcJson: srcJson); @override String declare() { - return _declareListMethod() + "\n" + delegateTemplate?.declare() ?? super.declare(); + return _declareListMethod() + "\n" + delegateTemplate?.declare() ?? + super.declare(); } String _declareListMethod() { - var listMethod = """List<$className> get${className}List(List list){ + var listMethod = + """List<$className> get${className}List(List list){ List<$className> result = []; list.forEach((item){ result.add($className.fromJson(item)); @@ -154,11 +162,13 @@ class ListTemplate extends DefaultTemplate { } @override - List get fieldList => FieldHelper(json.encode(json.decode(srcJson)[0])).getFields(); + List get fieldList => + FieldHelper(json.encode(json.decode(srcJson)[0])).getFields(); } class V1Template extends DefaultTemplate { - V1Template({String srcJson, String className = "Entity"}) : super(className: className, srcJson: srcJson); + V1Template({String srcJson, String className = "Entity"}) + : super(className: className, srcJson: srcJson); @override String interface() => ""; @@ -168,7 +178,8 @@ class V1Template extends DefaultTemplate { var result = StringBuffer(); result.writeln(super.method()); result.writeln(); - result.write(" Map toJson() => _\$${className}ToJson(this);"); + result.write( + " Map toJson() => _\$${className}ToJson(this);"); return result.toString(); } } diff --git a/pubspec.yaml b/pubspec.yaml index 67d8f46..3387c53 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,11 +11,10 @@ environment: # path: ^1.4.1 dependencies: # Your other regular dependencies here - json_annotation: ^0.2.3 - intl: ^0.15.7 + json_annotation: ^3.0.0 + intl: ^0.15.8 - dev_dependencies: - build_runner: ^0.9.0 - build_web_compilers: ^0.4.0 - json_serializable: ^0.5.4 \ No newline at end of file + build_runner: ^1.6.6 + build_web_compilers: ^2.2.3 + json_serializable: ^3.2.0 \ No newline at end of file diff --git a/web/index.html b/web/index.html index 0dc635c..d8ae200 100644 --- a/web/index.html +++ b/web/index.html @@ -40,6 +40,8 @@ jsonKey annotation use camelCase + + use static
diff --git a/web/index_ch.html b/web/index_ch.html index 47872dc..add6b8e 100644 --- a/web/index_ch.html +++ b/web/index_ch.html @@ -38,9 +38,11 @@ 类名称 - jsonKey annotation + 使用 JsonKey 注解 - use camelCase + 驼峰命名 + + 使用静态方法