forked from lxm_flutter/json2dart
添加了一个下载(保存)文件的功能
This commit is contained in:
@@ -26,7 +26,6 @@ class Generator {
|
||||
|
||||
void refreshTemplate(DefaultTemplate template) {
|
||||
var fieldList = template.fieldList;
|
||||
bool needRefresh = false;
|
||||
fieldList.forEach((filed) {
|
||||
if (filed is MapField) {
|
||||
// filed.typeString
|
||||
|
||||
@@ -9,6 +9,8 @@ bool useJsonKey = true;
|
||||
|
||||
bool isCamelCase = true;
|
||||
|
||||
var downloadFileName = "";
|
||||
|
||||
const defaultValue = """{
|
||||
"body": "",
|
||||
"data": [1],
|
||||
@@ -45,6 +47,7 @@ void main() {
|
||||
|
||||
InputElement eJsonKey = querySelector("#use_json_key");
|
||||
InputElement eCamelCase = querySelector("#camelCase");
|
||||
TextAreaElement result = querySelector("#result");
|
||||
|
||||
void onJsonKeyChange() {
|
||||
useJsonKey = eJsonKey.checked;
|
||||
@@ -78,12 +81,27 @@ void main() {
|
||||
refreshData();
|
||||
|
||||
querySelector("#copy").onClick.listen((event) {
|
||||
TextAreaElement result = querySelector("#result");
|
||||
result.focus();
|
||||
result.setSelectionRange(0, result.textLength);
|
||||
document.execCommand("copy", null, "");
|
||||
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() {
|
||||
@@ -107,6 +125,7 @@ void refreshData() {
|
||||
var generator = Generator(string, entityClassName);
|
||||
var dartCode = generator.makeDartCode();
|
||||
var dartFileName = ("${generator.fileName}.dart");
|
||||
downloadFileName = dartFileName;
|
||||
querySelector("#file_name").text = "应该使用的文件名为: $dartFileName";
|
||||
|
||||
result.value = dartCode;
|
||||
|
||||
@@ -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">
|
||||
@@ -15,30 +15,35 @@
|
||||
|
||||
<body>
|
||||
|
||||
<div>
|
||||
<div id="input" class="textarea">
|
||||
<div class="top">
|
||||
将json粘贴至左边
|
||||
<div>
|
||||
<div id="input" class="textarea">
|
||||
<div class="top">
|
||||
将json粘贴至左边
|
||||
</div>
|
||||
<textarea id="json" title="json字符串"></textarea>
|
||||
<div>
|
||||
<button id="format">格式化</button>
|
||||
</div>
|
||||
</div>
|
||||
<textarea id="json" title="json字符串"></textarea>
|
||||
<div>
|
||||
<button id="format">格式化</button>
|
||||
<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>
|
||||
<button id="save">下载</button>
|
||||
</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>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user