- SFTP download
- open downloaded files in other apps
This commit is contained in:
Junyuan Feng
2022-05-07 22:15:09 +08:00
parent 74a933eb6e
commit b824e06736
33 changed files with 1223 additions and 198 deletions

View File

@@ -23,17 +23,30 @@ class MessageLookup extends MessageLookupByLibrary {
static String m0(rainSunMeGithub) =>
"\nThanks ${rainSunMeGithub} for participating in the test.\n\nAll rights reserved.";
static String m1(code) => "request failed, status code: ${code}";
static String m1(fileName) => "Download [${fileName}] to local?";
static String m2(myGithub) => "\nMade with ❤️ by ${myGithub}";
static String m2(runningCount, stoppedCount) =>
"${runningCount} running, ${stoppedCount} container stopped.";
static String m3(server) => "Are you sure to delete server [${server}]?";
static String m3(count) => "${count} container running.";
static String m4(build) => "Found: v1.0.${build}, click to update";
static String m4(percent, size) => "${percent}% of ${size}";
static String m5(build) => "Current: v1.0.${build}";
static String m5(code) => "request failed, status code: ${code}";
static String m6(build) => "Current: v1.0.${build}, is up to date";
static String m6(myGithub) => "\nMade with ❤️ by ${myGithub}";
static String m7(time) => "Spent time: ${time} seconds";
static String m8(name) => "Are you sure to delete [${name}]?";
static String m9(server) => "Are you sure to delete server [${server}]?";
static String m10(build) => "Found: v1.0.${build}, click to update";
static String m11(build) => "Current: v1.0.${build}";
static String m12(build) => "Current: v1.0.${build}, is up to date";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -41,9 +54,12 @@ class MessageLookup extends MessageLookupByLibrary {
"addAServer": MessageLookupByLibrary.simpleMessage("add a server"),
"addPrivateKey":
MessageLookupByLibrary.simpleMessage("Add private key"),
"alreadyLastDir":
MessageLookupByLibrary.simpleMessage("Already in last directory."),
"appPrimaryColor":
MessageLookupByLibrary.simpleMessage("App primary color"),
"attention": MessageLookupByLibrary.simpleMessage("Attention"),
"backDir": MessageLookupByLibrary.simpleMessage("Back"),
"cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"choose": MessageLookupByLibrary.simpleMessage("Choose"),
"chooseDestination":
@@ -52,33 +68,57 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Choose private key"),
"clear": MessageLookupByLibrary.simpleMessage("Clear"),
"close": MessageLookupByLibrary.simpleMessage("Close"),
"containerStatus":
MessageLookupByLibrary.simpleMessage("Container status"),
"convert": MessageLookupByLibrary.simpleMessage("Convert"),
"copy": MessageLookupByLibrary.simpleMessage("Copy"),
"copyPath": MessageLookupByLibrary.simpleMessage("Copy path"),
"createFolder": MessageLookupByLibrary.simpleMessage("Create folder"),
"currentMode": MessageLookupByLibrary.simpleMessage("Current Mode"),
"debug": MessageLookupByLibrary.simpleMessage("Debug"),
"decode": MessageLookupByLibrary.simpleMessage("Decode"),
"delete": MessageLookupByLibrary.simpleMessage("Delete"),
"dl2Local": m1,
"dockerStatusRunningAndStoppedFmt": m2,
"dockerStatusRunningFmt": m3,
"dockerWaitConnection": MessageLookupByLibrary.simpleMessage(
"Please wait for the connection to be established."),
"download": MessageLookupByLibrary.simpleMessage("Download"),
"downloadFinished":
MessageLookupByLibrary.simpleMessage("Download finished"),
"downloadStatus": m4,
"edit": MessageLookupByLibrary.simpleMessage("Edit"),
"encode": MessageLookupByLibrary.simpleMessage("Encode"),
"error": MessageLookupByLibrary.simpleMessage("Error"),
"exampleName": MessageLookupByLibrary.simpleMessage("Example name"),
"export": MessageLookupByLibrary.simpleMessage("Export"),
"fieldMustNotEmpty": MessageLookupByLibrary.simpleMessage(
"These fields must not be empty."),
"go": MessageLookupByLibrary.simpleMessage("Go"),
"goSftpDlPage":
MessageLookupByLibrary.simpleMessage("Go to SFTP download page?"),
"host": MessageLookupByLibrary.simpleMessage("Host"),
"httpFailedWithCode": m1,
"httpFailedWithCode": m5,
"import": MessageLookupByLibrary.simpleMessage("Import"),
"importAndExport":
MessageLookupByLibrary.simpleMessage("Import and Export"),
"install": MessageLookupByLibrary.simpleMessage("install"),
"installDockerWithUrl": MessageLookupByLibrary.simpleMessage(
"Please https://docs.docker.com/engine/install docker first."),
"keepForeground":
MessageLookupByLibrary.simpleMessage("Keep app foreground!"),
"keyAuth": MessageLookupByLibrary.simpleMessage("Key Auth"),
"launchPage": MessageLookupByLibrary.simpleMessage("Launch page"),
"license": MessageLookupByLibrary.simpleMessage("License"),
"loadingFiles":
MessageLookupByLibrary.simpleMessage("Loading files..."),
"loss": MessageLookupByLibrary.simpleMessage("Loss"),
"madeWithLove": m2,
"madeWithLove": m6,
"max": MessageLookupByLibrary.simpleMessage("max"),
"min": MessageLookupByLibrary.simpleMessage("min"),
"ms": MessageLookupByLibrary.simpleMessage("ms"),
"name": MessageLookupByLibrary.simpleMessage("Name"),
"noClient": MessageLookupByLibrary.simpleMessage("No client"),
"noResult": MessageLookupByLibrary.simpleMessage("No result"),
"noSavedPrivateKey":
MessageLookupByLibrary.simpleMessage("No saved private keys."),
@@ -87,6 +127,7 @@ class MessageLookup extends MessageLookupByLibrary {
"noServerAvailable":
MessageLookupByLibrary.simpleMessage("No server available."),
"ok": MessageLookupByLibrary.simpleMessage("OK"),
"open": MessageLookupByLibrary.simpleMessage("Open"),
"ping": MessageLookupByLibrary.simpleMessage("Ping"),
"pingAvg": MessageLookupByLibrary.simpleMessage("Avg:"),
"pingInputIP": MessageLookupByLibrary.simpleMessage(
@@ -100,6 +141,7 @@ class MessageLookup extends MessageLookupByLibrary {
"port": MessageLookupByLibrary.simpleMessage("Port"),
"privateKey": MessageLookupByLibrary.simpleMessage("Private Key"),
"pwd": MessageLookupByLibrary.simpleMessage("Password"),
"rename": MessageLookupByLibrary.simpleMessage("Rename"),
"result": MessageLookupByLibrary.simpleMessage("Result"),
"run": MessageLookupByLibrary.simpleMessage("Run"),
"save": MessageLookupByLibrary.simpleMessage("Save"),
@@ -116,12 +158,21 @@ class MessageLookup extends MessageLookupByLibrary {
"serverTabUnkown":
MessageLookupByLibrary.simpleMessage("Unknown state"),
"setting": MessageLookupByLibrary.simpleMessage("Setting"),
"sftpDlPrepare":
MessageLookupByLibrary.simpleMessage("Preparing to connect..."),
"sftpNoDownloadTask":
MessageLookupByLibrary.simpleMessage("No download task."),
"sftpSSHConnected":
MessageLookupByLibrary.simpleMessage("SFTP Connected"),
"snippet": MessageLookupByLibrary.simpleMessage("Snippet"),
"spentTime": m7,
"start": MessageLookupByLibrary.simpleMessage("Start"),
"stop": MessageLookupByLibrary.simpleMessage("Stop"),
"sureToDeleteServer": m3,
"sureDelete": m8,
"sureToDeleteServer": m9,
"ttl": MessageLookupByLibrary.simpleMessage("TTL"),
"unknown": MessageLookupByLibrary.simpleMessage("unknown"),
"unknownError": MessageLookupByLibrary.simpleMessage("Unknown error"),
"unkownConvertMode":
MessageLookupByLibrary.simpleMessage("Unknown convert mode"),
"updateIntervalEqual0": MessageLookupByLibrary.simpleMessage(
@@ -131,9 +182,9 @@ class MessageLookup extends MessageLookupByLibrary {
"upsideDown": MessageLookupByLibrary.simpleMessage("Upside Down"),
"urlOrJson": MessageLookupByLibrary.simpleMessage("URL or JSON"),
"user": MessageLookupByLibrary.simpleMessage("User"),
"versionHaveUpdate": m4,
"versionUnknownUpdate": m5,
"versionUpdated": m6,
"versionHaveUpdate": m10,
"versionUnknownUpdate": m11,
"versionUpdated": m12,
"willTakEeffectImmediately":
MessageLookupByLibrary.simpleMessage("Will take effect immediately")
};

View File

@@ -23,61 +23,95 @@ class MessageLookup extends MessageLookupByLibrary {
static String m0(rainSunMeGithub) =>
"\n感谢 ${rainSunMeGithub} 参与软件测试。\n\n保留所有权利。";
static String m1(code) => "请求失败, 状态码: ${code}";
static String m1(fileName) => "下载 [${fileName}] 到本地?";
static String m2(myGithub) => "\n用❤️制作 by ${myGithub}";
static String m2(runningCount, stoppedCount) =>
"${runningCount}个正在运行, ${stoppedCount}个已停止";
static String m3(server) => "你确定要删除服务器 [${server}] 吗?";
static String m3(count) => "${count}个容器正在运行";
static String m4(build) => "找到新版本v1.0.${build}, 点击更新";
static String m4(percent, size) => "${size}${percent}%";
static String m5(build) => "当前v1.0.${build}";
static String m5(code) => "请求失败, 状态码: ${code}";
static String m6(build) => "当前v1.0.${build}, 已是最新版本";
static String m6(myGithub) => "\n用❤️制作 by ${myGithub}";
static String m7(time) => "耗时: ${time}";
static String m8(name) => "确定删除[${name}]";
static String m9(server) => "你确定要删除服务器 [${server}] 吗?";
static String m10(build) => "找到新版本v1.0.${build}, 点击更新";
static String m11(build) => "当前v1.0.${build}";
static String m12(build) => "当前v1.0.${build}, 已是最新版本";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"aboutThanks": m0,
"addAServer": MessageLookupByLibrary.simpleMessage("添加服务器"),
"addPrivateKey": MessageLookupByLibrary.simpleMessage("添加一个私钥"),
"alreadyLastDir": MessageLookupByLibrary.simpleMessage("已经是最上层目录了"),
"appPrimaryColor": MessageLookupByLibrary.simpleMessage("App主要色"),
"attention": MessageLookupByLibrary.simpleMessage("注意"),
"backDir": MessageLookupByLibrary.simpleMessage("返回上一级"),
"cancel": MessageLookupByLibrary.simpleMessage("取消"),
"choose": MessageLookupByLibrary.simpleMessage("选择"),
"chooseDestination": MessageLookupByLibrary.simpleMessage("选择目标"),
"choosePrivateKey": MessageLookupByLibrary.simpleMessage("选择私钥"),
"clear": MessageLookupByLibrary.simpleMessage("清除"),
"close": MessageLookupByLibrary.simpleMessage("关闭"),
"containerStatus": MessageLookupByLibrary.simpleMessage("容器状态"),
"convert": MessageLookupByLibrary.simpleMessage("转换"),
"copy": MessageLookupByLibrary.simpleMessage("复制到剪切板"),
"copyPath": MessageLookupByLibrary.simpleMessage("复制路径"),
"createFolder": MessageLookupByLibrary.simpleMessage("创建文件夹"),
"currentMode": MessageLookupByLibrary.simpleMessage("当前模式"),
"debug": MessageLookupByLibrary.simpleMessage("调试"),
"decode": MessageLookupByLibrary.simpleMessage("解码"),
"delete": MessageLookupByLibrary.simpleMessage("删除"),
"dl2Local": m1,
"dockerStatusRunningAndStoppedFmt": m2,
"dockerStatusRunningFmt": m3,
"dockerWaitConnection": MessageLookupByLibrary.simpleMessage("请等待连接建立"),
"download": MessageLookupByLibrary.simpleMessage("下载"),
"downloadFinished": MessageLookupByLibrary.simpleMessage("下载完成!"),
"downloadStatus": m4,
"edit": MessageLookupByLibrary.simpleMessage("编辑"),
"encode": MessageLookupByLibrary.simpleMessage("编码"),
"error": MessageLookupByLibrary.simpleMessage("出错了"),
"exampleName": MessageLookupByLibrary.simpleMessage("名称示例"),
"export": MessageLookupByLibrary.simpleMessage("导出"),
"fieldMustNotEmpty": MessageLookupByLibrary.simpleMessage("这些输入框不能为空。"),
"go": MessageLookupByLibrary.simpleMessage("开始"),
"goSftpDlPage": MessageLookupByLibrary.simpleMessage("前往下载页?"),
"host": MessageLookupByLibrary.simpleMessage("主机"),
"httpFailedWithCode": m1,
"httpFailedWithCode": m5,
"import": MessageLookupByLibrary.simpleMessage("导入"),
"importAndExport": MessageLookupByLibrary.simpleMessage("导入或导出"),
"install": MessageLookupByLibrary.simpleMessage("安装"),
"installDockerWithUrl": MessageLookupByLibrary.simpleMessage(
"请先 https://docs.docker.com/engine/install docker"),
"keepForeground": MessageLookupByLibrary.simpleMessage("请保持应用处于前台!"),
"keyAuth": MessageLookupByLibrary.simpleMessage("公钥认证"),
"launchPage": MessageLookupByLibrary.simpleMessage("启动页"),
"license": MessageLookupByLibrary.simpleMessage("开源证书"),
"loadingFiles": MessageLookupByLibrary.simpleMessage("正在加载目录。。。"),
"loss": MessageLookupByLibrary.simpleMessage("丢包率"),
"madeWithLove": m2,
"madeWithLove": m6,
"max": MessageLookupByLibrary.simpleMessage("最大"),
"min": MessageLookupByLibrary.simpleMessage("最小"),
"ms": MessageLookupByLibrary.simpleMessage("毫秒"),
"name": MessageLookupByLibrary.simpleMessage("名称"),
"noClient": MessageLookupByLibrary.simpleMessage("没有SSH连接"),
"noResult": MessageLookupByLibrary.simpleMessage("无结果"),
"noSavedPrivateKey": MessageLookupByLibrary.simpleMessage("没有已保存的私钥。"),
"noSavedSnippet": MessageLookupByLibrary.simpleMessage("没有已保存的代码片段。"),
"noServerAvailable": MessageLookupByLibrary.simpleMessage("没有可用的服务器。"),
"ok": MessageLookupByLibrary.simpleMessage(""),
"open": MessageLookupByLibrary.simpleMessage("打开"),
"ping": MessageLookupByLibrary.simpleMessage("Ping"),
"pingAvg": MessageLookupByLibrary.simpleMessage("平均:"),
"pingInputIP": MessageLookupByLibrary.simpleMessage("请输入目标IP或域名"),
@@ -87,6 +121,7 @@ class MessageLookup extends MessageLookupByLibrary {
"port": MessageLookupByLibrary.simpleMessage("端口"),
"privateKey": MessageLookupByLibrary.simpleMessage("私钥"),
"pwd": MessageLookupByLibrary.simpleMessage("密码"),
"rename": MessageLookupByLibrary.simpleMessage("重命名"),
"result": MessageLookupByLibrary.simpleMessage("结果"),
"run": MessageLookupByLibrary.simpleMessage("运行"),
"save": MessageLookupByLibrary.simpleMessage("保存"),
@@ -100,12 +135,19 @@ class MessageLookup extends MessageLookupByLibrary {
"serverTabPlzSave": MessageLookupByLibrary.simpleMessage("请再次保存该私钥"),
"serverTabUnkown": MessageLookupByLibrary.simpleMessage("未知状态"),
"setting": MessageLookupByLibrary.simpleMessage("设置"),
"sftpDlPrepare": MessageLookupByLibrary.simpleMessage("准备连接至服务器..."),
"sftpNoDownloadTask": MessageLookupByLibrary.simpleMessage("没有下载任务"),
"sftpSSHConnected":
MessageLookupByLibrary.simpleMessage("SFTP 已连接,即将开始下载..."),
"snippet": MessageLookupByLibrary.simpleMessage("代码片段"),
"spentTime": m7,
"start": MessageLookupByLibrary.simpleMessage("开始"),
"stop": MessageLookupByLibrary.simpleMessage("停止"),
"sureToDeleteServer": m3,
"sureDelete": m8,
"sureToDeleteServer": m9,
"ttl": MessageLookupByLibrary.simpleMessage("缓存时间"),
"unknown": MessageLookupByLibrary.simpleMessage("未知"),
"unknownError": MessageLookupByLibrary.simpleMessage("未知错误"),
"unkownConvertMode": MessageLookupByLibrary.simpleMessage("未知转换模式"),
"updateIntervalEqual0": MessageLookupByLibrary.simpleMessage(
"你设置为0服务器状态不会自动刷新。\n你可以手动下拉刷新。"),
@@ -114,9 +156,9 @@ class MessageLookup extends MessageLookupByLibrary {
"upsideDown": MessageLookupByLibrary.simpleMessage("上下交换"),
"urlOrJson": MessageLookupByLibrary.simpleMessage("链接或JSON"),
"user": MessageLookupByLibrary.simpleMessage("用户"),
"versionHaveUpdate": m4,
"versionUnknownUpdate": m5,
"versionUpdated": m6,
"versionHaveUpdate": m10,
"versionUnknownUpdate": m11,
"versionUpdated": m12,
"willTakEeffectImmediately":
MessageLookupByLibrary.simpleMessage("更改将会立即生效")
};

View File

@@ -829,6 +829,277 @@ class S {
args: [],
);
}
/// `Download`
String get download {
return Intl.message(
'Download',
name: 'download',
desc: '',
args: [],
);
}
/// `Copy path`
String get copyPath {
return Intl.message(
'Copy path',
name: 'copyPath',
desc: '',
args: [],
);
}
/// `Keep app foreground!`
String get keepForeground {
return Intl.message(
'Keep app foreground!',
name: 'keepForeground',
desc: '',
args: [],
);
}
/// `Download finished`
String get downloadFinished {
return Intl.message(
'Download finished',
name: 'downloadFinished',
desc: '',
args: [],
);
}
/// `{percent}% of {size}`
String downloadStatus(Object percent, Object size) {
return Intl.message(
'$percent% of $size',
name: 'downloadStatus',
desc: '',
args: [percent, size],
);
}
/// `Preparing to connect...`
String get sftpDlPrepare {
return Intl.message(
'Preparing to connect...',
name: 'sftpDlPrepare',
desc: '',
args: [],
);
}
/// `SFTP Connected`
String get sftpSSHConnected {
return Intl.message(
'SFTP Connected',
name: 'sftpSSHConnected',
desc: '',
args: [],
);
}
/// `Spent time: {time} seconds`
String spentTime(Object time) {
return Intl.message(
'Spent time: $time seconds',
name: 'spentTime',
desc: '',
args: [time],
);
}
/// `Back`
String get backDir {
return Intl.message(
'Back',
name: 'backDir',
desc: '',
args: [],
);
}
/// `Already in last directory.`
String get alreadyLastDir {
return Intl.message(
'Already in last directory.',
name: 'alreadyLastDir',
desc: '',
args: [],
);
}
/// `Open`
String get open {
return Intl.message(
'Open',
name: 'open',
desc: '',
args: [],
);
}
/// `Are you sure to delete [{name}]?`
String sureDelete(Object name) {
return Intl.message(
'Are you sure to delete [$name]?',
name: 'sureDelete',
desc: '',
args: [name],
);
}
/// `Container status`
String get containerStatus {
return Intl.message(
'Container status',
name: 'containerStatus',
desc: '',
args: [],
);
}
/// `No client`
String get noClient {
return Intl.message(
'No client',
name: 'noClient',
desc: '',
args: [],
);
}
/// `Please https://docs.docker.com/engine/install docker first.`
String get installDockerWithUrl {
return Intl.message(
'Please https://docs.docker.com/engine/install docker first.',
name: 'installDockerWithUrl',
desc: '',
args: [],
);
}
/// `Please wait for the connection to be established.`
String get dockerWaitConnection {
return Intl.message(
'Please wait for the connection to be established.',
name: 'dockerWaitConnection',
desc: '',
args: [],
);
}
/// `Unknown error`
String get unknownError {
return Intl.message(
'Unknown error',
name: 'unknownError',
desc: '',
args: [],
);
}
/// `{count} container running.`
String dockerStatusRunningFmt(Object count) {
return Intl.message(
'$count container running.',
name: 'dockerStatusRunningFmt',
desc: '',
args: [count],
);
}
/// `{runningCount} running, {stoppedCount} container stopped.`
String dockerStatusRunningAndStoppedFmt(
Object runningCount, Object stoppedCount) {
return Intl.message(
'$runningCount running, $stoppedCount container stopped.',
name: 'dockerStatusRunningAndStoppedFmt',
desc: '',
args: [runningCount, stoppedCount],
);
}
/// `install`
String get install {
return Intl.message(
'install',
name: 'install',
desc: '',
args: [],
);
}
/// `Loading files...`
String get loadingFiles {
return Intl.message(
'Loading files...',
name: 'loadingFiles',
desc: '',
args: [],
);
}
/// `No download task.`
String get sftpNoDownloadTask {
return Intl.message(
'No download task.',
name: 'sftpNoDownloadTask',
desc: '',
args: [],
);
}
/// `Go to SFTP download page?`
String get goSftpDlPage {
return Intl.message(
'Go to SFTP download page?',
name: 'goSftpDlPage',
desc: '',
args: [],
);
}
/// `Create folder`
String get createFolder {
return Intl.message(
'Create folder',
name: 'createFolder',
desc: '',
args: [],
);
}
/// `Rename`
String get rename {
return Intl.message(
'Rename',
name: 'rename',
desc: '',
args: [],
);
}
/// `Download [{fileName}] to local?`
String dl2Local(Object fileName) {
return Intl.message(
'Download [$fileName] to local?',
name: 'dl2Local',
desc: '',
args: [fileName],
);
}
/// `Error`
String get error {
return Intl.message(
'Error',
name: 'error',
desc: '',
args: [],
);
}
}
class AppLocalizationDelegate extends LocalizationsDelegate<S> {