static method

This commit is contained in:
Caijinglong
2019-08-19 15:49:58 +08:00
parent 88a48be157
commit f8f7b637a3
5 changed files with 42 additions and 15 deletions

View File

@@ -10,6 +10,7 @@ String entityName = null;
bool useJsonKey = true; bool useJsonKey = true;
bool isCamelCase = true; bool isCamelCase = true;
bool isStaticMethod = true;
var downloadFileName = ""; var downloadFileName = "";
@@ -61,6 +62,7 @@ void main() async {
InputElement eJsonKey = querySelector("#use_json_key"); InputElement eJsonKey = querySelector("#use_json_key");
InputElement eCamelCase = querySelector("#camelCase"); InputElement eCamelCase = querySelector("#camelCase");
InputElement eUseStatic = querySelector("#use_static");
TextAreaElement result = querySelector("#result"); TextAreaElement result = querySelector("#result");
RadioButtonInputElement v0 = querySelector("#v0"); RadioButtonInputElement v0 = querySelector("#v0");
RadioButtonInputElement v1 = querySelector("#v1"); RadioButtonInputElement v1 = querySelector("#v1");
@@ -125,6 +127,17 @@ void main() async {
refreshData(); refreshData();
}); });
eUseStatic.checked = isStaticMethod;
eUseStatic.onInput.listen((event) {
isStaticMethod = eUseStatic.checked;
refreshData();
});
querySelector("#useStaticLabel").onClick.listen((event) {
eUseStatic.checked = !eUseStatic.checked;
refreshData();
});
refreshData(); refreshData();
querySelector("#copy").onClick.listen((event) { querySelector("#copy").onClick.listen((event) {

View File

@@ -97,6 +97,9 @@ class DefaultTemplate extends Template {
@override @override
String method() { String method() {
if (main.isStaticMethod) {
return " static $className fromJson(Map<String, dynamic> srcJson) => _\$${className}FromJson(srcJson);";
}
return " factory $className.fromJson(Map<String, dynamic> srcJson) => _\$${className}FromJson(srcJson);"; return " factory $className.fromJson(Map<String, dynamic> srcJson) => _\$${className}FromJson(srcJson);";
} }
@@ -108,22 +111,27 @@ class DefaultTemplate extends Template {
if (this is ListTemplate) { if (this is ListTemplate) {
return this; return this;
} }
return ListTemplate(srcJson: srcJson, className: className, delegateTemplate: this); return ListTemplate(
srcJson: srcJson, className: className, delegateTemplate: this);
} }
} }
class ListTemplate extends DefaultTemplate { class ListTemplate extends DefaultTemplate {
Template delegateTemplate; 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 @override
String declare() { String declare() {
return _declareListMethod() + "\n" + delegateTemplate?.declare() ?? super.declare(); return _declareListMethod() + "\n" + delegateTemplate?.declare() ??
super.declare();
} }
String _declareListMethod() { String _declareListMethod() {
var listMethod = """List<$className> get${className}List(List<dynamic> list){ var listMethod =
"""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));
@@ -154,11 +162,13 @@ class ListTemplate extends DefaultTemplate {
} }
@override @override
List<Field> get fieldList => FieldHelper(json.encode(json.decode(srcJson)[0])).getFields(); List<Field> get fieldList =>
FieldHelper(json.encode(json.decode(srcJson)[0])).getFields();
} }
class V1Template extends DefaultTemplate { 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 @override
String interface() => ""; String interface() => "";
@@ -168,7 +178,8 @@ class V1Template extends DefaultTemplate {
var result = StringBuffer(); var result = StringBuffer();
result.writeln(super.method()); result.writeln(super.method());
result.writeln(); result.writeln();
result.write(" Map<String, dynamic> toJson() => _\$${className}ToJson(this);"); result.write(
" Map<String, dynamic> toJson() => _\$${className}ToJson(this);");
return result.toString(); return result.toString();
} }
} }

View File

@@ -11,11 +11,10 @@ environment:
# path: ^1.4.1 # path: ^1.4.1
dependencies: dependencies:
# Your other regular dependencies here # Your other regular dependencies here
json_annotation: ^0.2.3 json_annotation: ^3.0.0
intl: ^0.15.7 intl: ^0.15.8
dev_dependencies: dev_dependencies:
build_runner: ^0.9.0 build_runner: ^1.6.6
build_web_compilers: ^0.4.0 build_web_compilers: ^2.2.3
json_serializable: ^0.5.4 json_serializable: ^3.2.0

View File

@@ -40,6 +40,8 @@
<span id="check_label">jsonKey annotation</span> <span id="check_label">jsonKey annotation</span>
<input type="checkbox" id="camelCase" /> <input type="checkbox" id="camelCase" />
<span id="camelCaseLabel">use camelCase</span> <span id="camelCaseLabel">use camelCase</span>
<input type="checkbox" id="use_static" />
<span id="useStaticLabel">use static</span>
</div> </div>
<div id="file_name"></div> <div id="file_name"></div>
</span> </span>

View File

@@ -38,9 +38,11 @@
类名称 类名称
<input id="out_entity_name" /> <input id="out_entity_name" />
<input type="checkbox" id="use_json_key" /> <input type="checkbox" id="use_json_key" />
<span id="check_label">jsonKey annotation</span> <span id="check_label">使用 JsonKey 注解</span>
<input type="checkbox" id="camelCase" /> <input type="checkbox" id="camelCase" />
<span id="camelCaseLabel">use camelCase</span> <span id="camelCaseLabel">驼峰命名</span>
<input type="checkbox" id="use_static" />
<span id="useStaticLabel">使用静态方法</span>
</div> </div>
<div id="file_name"></div> <div id="file_name"></div>
</span> </span>