forked from lxm_flutter/json2dart
添加了一个下载(保存)文件的功能
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8"/>
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="scaffolded-by" content="https://github.com/google/stagehand"/>
|
<meta name="scaffolded-by" content="https://github.com/google/stagehand" />
|
||||||
<title>hello_world</title>
|
<title>hello_world</title>
|
||||||
<link rel="stylesheet" href="styles.css">
|
<link rel="stylesheet" href="styles.css">
|
||||||
<link rel="icon" href="favicon.ico">
|
<link rel="icon" href="favicon.ico">
|
||||||
@@ -15,30 +15,35 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div id="input" class="textarea">
|
<div id="input" class="textarea">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
将json粘贴至左边
|
将json粘贴至左边
|
||||||
|
</div>
|
||||||
|
<textarea id="json" title="json字符串"></textarea>
|
||||||
|
<div>
|
||||||
|
<button id="format">格式化</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<textarea id="json" title="json字符串"></textarea>
|
<div id="output" class="textarea">
|
||||||
<div>
|
<div class="top"></div>
|
||||||
<button id="format">格式化</button>
|
<div class="result_title">
|
||||||
|
类名称
|
||||||
|
<input id="out_entity_name" />
|
||||||
|
<input type="checkbox" id="use_json_key" />
|
||||||
|
<span id="check_label">jsonKey annotation</span>
|
||||||
|
<input type="checkbox" id="camelCase" />
|
||||||
|
<span id="camelCaseLabel">use camelCase</span>
|
||||||
|
</div>
|
||||||
|
<div id="file_name"></div>
|
||||||
|
<textarea id="result" title="结果"></textarea>
|
||||||
|
<div>
|
||||||
|
<button id="copy">复制</button>
|
||||||
|
<button id="save">下载</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div id="output" class="textarea">
|
|
||||||
<div class="top"></div>
|
|
||||||
<div class="result_title">
|
|
||||||
类名称
|
|
||||||
<input id="out_entity_name"/>
|
|
||||||
<input type="checkbox" id="use_json_key"/><span id="check_label">jsonKey annotation</span>
|
|
||||||
<input type="checkbox" id="camelCase"/><span id="camelCaseLabel">use camelCase</span>
|
|
||||||
</div>
|
|
||||||
<div id="file_name"></div>
|
|
||||||
<textarea id="result" title="结果"></textarea>
|
|
||||||
<div><button id="copy">复制</button></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user