This commit is contained in:
Caijinglong
2018-08-08 08:58:34 +08:00
5 changed files with 70 additions and 32 deletions

View File

@@ -2,13 +2,24 @@
一个网页版本的json转dart库 一个网页版本的json转dart库
不同于https://github.com/debuggerx01/JSONFormat4Flutter的是 这个是为了json_serializable创建的 ## 说明
页面较简陋
不同于https://github.com/debuggerx01/JSONFormat4Flutter 的是:这个是为了json_serializable创建的
页面较简陋,功能完善😊
json_serializable 可以参考flutter官网json部分 [flutter](https://flutter.io/json)
项目的展示地址: https://caijinglong.github.io/json2dart/
项目使用dart web开发
## 说明
主体功能完结,有需要修改的地方欢迎留言
## todo ```
1. 格式化代码:完成 dart --version
2. 编写格式化相关的逻辑 Dart VM version: 2.0.0-dev.69.5 (Tue Jul 31 15:05:14 2018 +0200) on "macos_x64"
```
## license ## license

View File

@@ -26,7 +26,6 @@ class Generator {
void refreshTemplate(DefaultTemplate template) { void refreshTemplate(DefaultTemplate template) {
var fieldList = template.fieldList; var fieldList = template.fieldList;
bool needRefresh = false;
fieldList.forEach((filed) { fieldList.forEach((filed) {
if (filed is MapField) { if (filed is MapField) {
// filed.typeString // filed.typeString

View File

@@ -9,6 +9,8 @@ bool useJsonKey = true;
bool isCamelCase = true; bool isCamelCase = true;
var downloadFileName = "";
const defaultValue = """{ const defaultValue = """{
"body": "", "body": "",
"data": [1], "data": [1],
@@ -45,6 +47,7 @@ void main() {
InputElement eJsonKey = querySelector("#use_json_key"); InputElement eJsonKey = querySelector("#use_json_key");
InputElement eCamelCase = querySelector("#camelCase"); InputElement eCamelCase = querySelector("#camelCase");
TextAreaElement result = querySelector("#result");
void onJsonKeyChange() { void onJsonKeyChange() {
useJsonKey = eJsonKey.checked; useJsonKey = eJsonKey.checked;
@@ -78,12 +81,27 @@ void main() {
refreshData(); refreshData();
querySelector("#copy").onClick.listen((event) { querySelector("#copy").onClick.listen((event) {
TextAreaElement result = querySelector("#result");
result.focus(); result.focus();
result.setSelectionRange(0, result.textLength); result.setSelectionRange(0, result.textLength);
document.execCommand("copy", null, ""); document.execCommand("copy", null, "");
result.blur(); result.blur();
}); });
ButtonElement saveButton = querySelector("#save");
saveButton.onClick.listen((event) async {
Blob blob = Blob([result.value]);
// FileSystem _filesystem =
// await window.requestFileSystem(1024 * 1024, persistent: false);
// FileEntry fileEntry = await _filesystem.root.createFile('dart_test.csv');
// FileWriter fw = await fileEntry.createWriter();
// fw.write(blob);
// File file = await fileEntry.file();
AnchorElement saveLink = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
saveLink.href = Url.createObjectUrlFromBlob(blob);
// saveLink.type = "download";
saveLink.download = downloadFileName;
saveLink.click();
});
} }
void refreshData() { void refreshData() {
@@ -107,6 +125,7 @@ void refreshData() {
var generator = Generator(string, entityClassName); var generator = Generator(string, entityClassName);
var dartCode = generator.makeDartCode(); var dartCode = generator.makeDartCode();
var dartFileName = ("${generator.fileName}.dart"); var dartFileName = ("${generator.fileName}.dart");
downloadFileName = dartFileName;
querySelector("#file_name").text = "应该使用的文件名为: $dartFileName"; querySelector("#file_name").text = "应该使用的文件名为: $dartFileName";
result.value = dartCode; result.value = dartCode;

View File

@@ -9,7 +9,11 @@ environment:
#dependencies: #dependencies:
# path: ^1.4.1 # path: ^1.4.1
dependencies:
# Your other regular dependencies here
json_annotation: ^0.2.3
dev_dependencies: dev_dependencies:
build_runner: ^0.9.0 build_runner: ^0.9.0
build_web_compilers: ^0.4.0 build_web_compilers: ^0.4.0
json_serializable: ^0.5.4

View File

@@ -30,12 +30,17 @@
<div class="result_title"> <div class="result_title">
类名称 类名称
<input id="out_entity_name" /> <input id="out_entity_name" />
<input type="checkbox" id="use_json_key"/><span id="check_label">jsonKey annotation</span> <input type="checkbox" id="use_json_key" />
<input type="checkbox" id="camelCase"/><span id="camelCaseLabel">use camelCase</span> <span id="check_label">jsonKey annotation</span>
<input type="checkbox" id="camelCase" />
<span id="camelCaseLabel">use camelCase</span>
</div> </div>
<div id="file_name"></div> <div id="file_name"></div>
<textarea id="result" title="结果"></textarea> <textarea id="result" title="结果"></textarea>
<div><button id="copy">复制</button></div> <div>
<button id="copy">复制</button>
<button id="save">下载</button>
</div>
</div> </div>
</div> </div>