This commit is contained in:
Caijinglong
2018-08-06 18:03:40 +08:00
parent 6c2bdab76e
commit 99e39043df
4 changed files with 81 additions and 8 deletions

View File

@@ -0,0 +1,17 @@
import 'package:json2dart_serialization/template.dart';
class Generator {
String jsonString;
String fileName;
Generator(this.jsonString, this.fileName);
String makeDartCode() {
Template template = DefaultTemplate();
return jsonString;
}
static const String importString = "import 'package:json_annotation/json_annotation.dart';";
String get header => """$importString
part $fileName.g.dart;""";
}

View File

@@ -0,0 +1,50 @@
abstract class Template {
String declare();
String constructor();
String field();
String method();
String end();
}
class DefaultTemplate extends Template {
@override
String constructor() {
// TODO: implement constructor
}
@override
String declare() {
// TODO: implement declare
}
@override
String end() {
// TODO: implement end
}
@override
String field() {
// TODO: implement field
}
@override
String method() {
// TODO: implement method
}
}
String createCode(Template template) {
var code = """${template.declare()}
${template.field()}
${template.constructor()}
${template.method()}
${template.end()}
""";
return code;
}

View File

@@ -3,10 +3,10 @@
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="scaffolded-by" content="https://github.com/google/stagehand">
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="scaffolded-by" content="https://github.com/google/stagehand"/>
<title>hello_world</title>
<link rel="stylesheet" href="styles.css">
<link rel="icon" href="favicon.ico">
@@ -20,14 +20,14 @@
<div class="top">
将json粘贴至左边
</div>
<textarea id="json"></textarea>
<textarea id="json" title="json字符串"></textarea>
<div>
<button id="format">点击</button>
</div>
</div>
<div id="output" class="textarea">
<div class="top"></div>
<textarea id="result"></textarea>
<textarea id="result" title="结果"></textarea>
</div>
</div>

View File

@@ -1,18 +1,24 @@
import 'dart:convert';
import 'dart:html';
import 'package:json2dart_serialization/generator.dart';
void main() {
querySelector("#format").onClick.listen((event) {
TextAreaElement e = querySelector("#json");
var string = e.value;
var pretty = formatJson(string);
e.value = pretty;
var generator = Generator(string, 'test.dart');
var dartCode = generator.makeDartCode();
TextAreaElement result = querySelector("#result");
result.value = dartCode;
});
}
String formatJson(String jsonString) {
var map = json.decode(jsonString);
var prettyStringList = JsonUtf8Encoder(" ").convert(map);
var prettyString = String.fromCharCodes(prettyStringList);
var prettyString = JsonEncoder.withIndent(" ").convert(map);
return prettyString;
}