Skip to content

Commit 4716743

Browse files
committed
2 parents 2a83862 + ad1aa77 commit 4716743

File tree

5 files changed

+70
-32
lines changed

5 files changed

+70
-32
lines changed

Diff for: README.md

+16-5
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,24 @@
22

33
一个网页版本的json转dart库
44

5-
不同于https://github.com/debuggerx01/JSONFormat4Flutter的是 这个是为了json_serializable创建的
6-
页面较简陋
5+
## 说明
76

7+
不同于https://github.com/debuggerx01/JSONFormat4Flutter 的是:这个是为了json_serializable创建的
8+
页面较简陋,功能完善😊
89

9-
## todo
10-
1. 格式化代码:完成
11-
2. 编写格式化相关的逻辑
10+
json_serializable 可以参考flutter官网json部分 [flutter](https://flutter.io/json)
11+
12+
项目的展示地址: https://caijinglong.github.io/json2dart/
13+
14+
项目使用dart web开发
15+
## 说明
16+
主体功能完结,有需要修改的地方欢迎留言
17+
18+
19+
```
20+
dart --version
21+
Dart VM version: 2.0.0-dev.69.5 (Tue Jul 31 15:05:14 2018 +0200) on "macos_x64"
22+
```
1223

1324
## license
1425

Diff for: lib/generator.dart

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class Generator {
2626

2727
void refreshTemplate(DefaultTemplate template) {
2828
var fieldList = template.fieldList;
29-
bool needRefresh = false;
3029
fieldList.forEach((filed) {
3130
if (filed is MapField) {
3231
// filed.typeString

Diff for: lib/json_generator.dart

+20-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ bool useJsonKey = true;
99

1010
bool isCamelCase = true;
1111

12+
var downloadFileName = "";
13+
1214
const defaultValue = """{
1315
"body": "",
1416
"data": [1],
@@ -45,6 +47,7 @@ void main() {
4547

4648
InputElement eJsonKey = querySelector("#use_json_key");
4749
InputElement eCamelCase = querySelector("#camelCase");
50+
TextAreaElement result = querySelector("#result");
4851

4952
void onJsonKeyChange() {
5053
useJsonKey = eJsonKey.checked;
@@ -78,12 +81,27 @@ void main() {
7881
refreshData();
7982

8083
querySelector("#copy").onClick.listen((event) {
81-
TextAreaElement result = querySelector("#result");
8284
result.focus();
8385
result.setSelectionRange(0, result.textLength);
8486
document.execCommand("copy", null, "");
8587
result.blur();
8688
});
89+
90+
ButtonElement saveButton = querySelector("#save");
91+
saveButton.onClick.listen((event) async {
92+
Blob blob = Blob([result.value]);
93+
// FileSystem _filesystem =
94+
// await window.requestFileSystem(1024 * 1024, persistent: false);
95+
// FileEntry fileEntry = await _filesystem.root.createFile('dart_test.csv');
96+
// FileWriter fw = await fileEntry.createWriter();
97+
// fw.write(blob);
98+
// File file = await fileEntry.file();
99+
AnchorElement saveLink = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
100+
saveLink.href = Url.createObjectUrlFromBlob(blob);
101+
// saveLink.type = "download";
102+
saveLink.download = downloadFileName;
103+
saveLink.click();
104+
});
87105
}
88106

89107
void refreshData() {
@@ -107,6 +125,7 @@ void refreshData() {
107125
var generator = Generator(string, entityClassName);
108126
var dartCode = generator.makeDartCode();
109127
var dartFileName = ("${generator.fileName}.dart");
128+
downloadFileName = dartFileName;
110129
querySelector("#file_name").text = "应该使用的文件名为: $dartFileName";
111130

112131
result.value = dartCode;

Diff for: pubspec.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ environment:
99

1010
#dependencies:
1111
# path: ^1.4.1
12+
dependencies:
13+
# Your other regular dependencies here
14+
json_annotation: ^0.2.3
1215

1316
dev_dependencies:
1417
build_runner: ^0.9.0
1518
build_web_compilers: ^0.4.0
19+
json_serializable: ^0.5.4

Diff for: web/index.html

+30-25
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
<html>
44

55
<head>
6-
<meta charset="utf-8"/>
7-
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
8-
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
9-
<meta name="scaffolded-by" content="https://github.com/google/stagehand"/>
6+
<meta charset="utf-8" />
7+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
8+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
9+
<meta name="scaffolded-by" content="https://github.com/google/stagehand" />
1010
<title>hello_world</title>
1111
<link rel="stylesheet" href="styles.css">
1212
<link rel="icon" href="favicon.ico">
@@ -15,30 +15,35 @@
1515

1616
<body>
1717

18-
<div>
19-
<div id="input" class="textarea">
20-
<div class="top">
21-
将json粘贴至左边
18+
<div>
19+
<div id="input" class="textarea">
20+
<div class="top">
21+
将json粘贴至左边
22+
</div>
23+
<textarea id="json" title="json字符串"></textarea>
24+
<div>
25+
<button id="format">格式化</button>
26+
</div>
2227
</div>
23-
<textarea id="json" title="json字符串"></textarea>
24-
<div>
25-
<button id="format">格式化</button>
28+
<div id="output" class="textarea">
29+
<div class="top"></div>
30+
<div class="result_title">
31+
类名称
32+
<input id="out_entity_name" />
33+
<input type="checkbox" id="use_json_key" />
34+
<span id="check_label">jsonKey annotation</span>
35+
<input type="checkbox" id="camelCase" />
36+
<span id="camelCaseLabel">use camelCase</span>
37+
</div>
38+
<div id="file_name"></div>
39+
<textarea id="result" title="结果"></textarea>
40+
<div>
41+
<button id="copy">复制</button>
42+
<button id="save">下载</button>
43+
</div>
2644
</div>
27-
</div>
28-
<div id="output" class="textarea">
29-
<div class="top"></div>
30-
<div class="result_title">
31-
类名称
32-
<input id="out_entity_name"/>
33-
<input type="checkbox" id="use_json_key"/><span id="check_label">jsonKey annotation</span>
34-
<input type="checkbox" id="camelCase"/><span id="camelCaseLabel">use camelCase</span>
35-
</div>
36-
<div id="file_name"></div>
37-
<textarea id="result" title="结果"></textarea>
38-
<div><button id="copy">复制</button></div>
39-
</div>
4045

41-
</div>
46+
</div>
4247
</body>
4348

4449
</html>

0 commit comments

Comments
 (0)