forked from lxm_flutter/json2dart
static method
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
pubspec.yaml
11
pubspec.yaml
@@ -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
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user