diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n.dart b/.dart_tool/flutter_gen/gen_l10n/l10n.dart index 0776124c..1f17f1e7 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n.dart @@ -158,6 +158,12 @@ abstract class S { /// **'Alter url'** String get alterUrl; + /// No description provided for @askContinue. + /// + /// In en, this message translates to: + /// **'{msg}, continue?'** + String askContinue(Object msg); + /// No description provided for @attention. /// /// In en, this message translates to: @@ -368,6 +374,12 @@ abstract class S { /// **'Batch delete servers'** String get deleteServers; + /// No description provided for @dirEmpty. + /// + /// In en, this message translates to: + /// **'Make sure dir is empty.'** + String get dirEmpty; + /// No description provided for @disabled. /// /// In en, this message translates to: @@ -1088,12 +1100,6 @@ abstract class S { /// **'Restore success. Restart app to apply.'** String get restoreSuccess; - /// No description provided for @restoreSureWithDate. - /// - /// In en, this message translates to: - /// **'Are you sure to restore from {date} ?'** - String restoreSureWithDate(Object date); - /// No description provided for @result. /// /// In en, this message translates to: @@ -1268,36 +1274,6 @@ abstract class S { /// **'Success'** String get success; - /// No description provided for @sureDelete. - /// - /// In en, this message translates to: - /// **'Are you sure to delete [{name}]?'** - String sureDelete(Object name); - - /// No description provided for @sureDirEmpty. - /// - /// In en, this message translates to: - /// **'Make sure dir is empty.'** - String get sureDirEmpty; - - /// No description provided for @sureNoPwd. - /// - /// In en, this message translates to: - /// **'Are you sure to use no password?'** - String get sureNoPwd; - - /// No description provided for @sureStop. - /// - /// In en, this message translates to: - /// **'Sure to stop [{item}] ?'** - String sureStop(Object item); - - /// No description provided for @sureToDeleteServer. - /// - /// In en, this message translates to: - /// **'Are you sure to delete server [{server}]?'** - String sureToDeleteServer(Object server); - /// No description provided for @suspendTip. /// /// In en, this message translates to: @@ -1430,6 +1406,12 @@ abstract class S { /// **'URL or JSON'** String get urlOrJson; + /// No description provided for @useNoPwd. + /// + /// In en, this message translates to: + /// **'No password will be used.'** + String get useNoPwd; + /// No description provided for @user. /// /// In en, this message translates to: diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart index c21f3259..cb29c9d4 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -34,6 +34,11 @@ class SDe extends S { @override String get alterUrl => 'Url ändern'; + @override + String askContinue(Object msg) { + return '$msg, weiter?'; + } + @override String get attention => 'Achtung'; @@ -139,6 +144,9 @@ class SDe extends S { @override String get deleteServers => 'Batch-Löschung von Servern'; + @override + String get dirEmpty => 'Stelle sicher, dass der Ordner leer ist.'; + @override String get disabled => 'Behinderte'; @@ -523,11 +531,6 @@ class SDe extends S { @override String get restoreSuccess => 'Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.'; - @override - String restoreSureWithDate(Object date) { - return 'Bist du sicher, dass du das Backup vom $date wiederherstellen möchtest?'; - } - @override String get result => 'Result'; @@ -619,27 +622,6 @@ class SDe extends S { @override String get success => 'Erfolgreich'; - @override - String sureDelete(Object name) { - return 'Soll [$name] wirklich gelöscht werden?'; - } - - @override - String get sureDirEmpty => 'Stelle sicher, dass der Ordner leer ist.'; - - @override - String get sureNoPwd => 'Bist du sicher, dass du kein Passwort verwenden willst?'; - - @override - String sureStop(Object item) { - return 'Sind Sie sicher, dass Sie [$item] stoppen möchten?'; - } - - @override - String sureToDeleteServer(Object server) { - return 'Bist du sicher, dass du [$server] löschen willst?'; - } - @override String get suspendTip => 'Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.'; @@ -710,6 +692,9 @@ class SDe extends S { @override String get urlOrJson => 'URL oder JSON'; + @override + String get useNoPwd => 'Es wird kein Passwort verwendet.'; + @override String get user => 'Benutzer'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart index 1410a8da..9a370388 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart @@ -34,6 +34,11 @@ class SEn extends S { @override String get alterUrl => 'Alter url'; + @override + String askContinue(Object msg) { + return '$msg, continue?'; + } + @override String get attention => 'Attention'; @@ -139,6 +144,9 @@ class SEn extends S { @override String get deleteServers => 'Batch delete servers'; + @override + String get dirEmpty => 'Make sure dir is empty.'; + @override String get disabled => 'Disabled'; @@ -523,11 +531,6 @@ class SEn extends S { @override String get restoreSuccess => 'Restore success. Restart app to apply.'; - @override - String restoreSureWithDate(Object date) { - return 'Are you sure to restore from $date ?'; - } - @override String get result => 'Result'; @@ -619,27 +622,6 @@ class SEn extends S { @override String get success => 'Success'; - @override - String sureDelete(Object name) { - return 'Are you sure to delete [$name]?'; - } - - @override - String get sureDirEmpty => 'Make sure dir is empty.'; - - @override - String get sureNoPwd => 'Are you sure to use no password?'; - - @override - String sureStop(Object item) { - return 'Sure to stop [$item] ?'; - } - - @override - String sureToDeleteServer(Object server) { - return 'Are you sure to delete server [$server]?'; - } - @override String get suspendTip => 'The suspend function requires root privileges and systemd support.'; @@ -710,6 +692,9 @@ class SEn extends S { @override String get urlOrJson => 'URL or JSON'; + @override + String get useNoPwd => 'No password will be used.'; + @override String get user => 'User'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart index 45a7e800..f626e96f 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart @@ -34,6 +34,11 @@ class SId extends S { @override String get alterUrl => 'Alter url'; + @override + String askContinue(Object msg) { + return '$msg, lanjutkan?'; + } + @override String get attention => 'Perhatian'; @@ -139,6 +144,9 @@ class SId extends S { @override String get deleteServers => 'Penghapusan server secara batch'; + @override + String get dirEmpty => 'Pastikan dir kosong.'; + @override String get disabled => 'Dengan disabilitas'; @@ -523,11 +531,6 @@ class SId extends S { @override String get restoreSuccess => 'Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.'; - @override - String restoreSureWithDate(Object date) { - return 'Apakah Anda pasti akan memulihkan dari $date?'; - } - @override String get result => 'Hasil'; @@ -619,27 +622,6 @@ class SId extends S { @override String get success => 'Kesuksesan'; - @override - String sureDelete(Object name) { - return 'Apakah Anda pasti akan menghapus [$name]?'; - } - - @override - String get sureDirEmpty => 'Pastikan dir kosong.'; - - @override - String get sureNoPwd => 'Apakah Anda pasti tidak menggunakan kata sandi?'; - - @override - String sureStop(Object item) { - return 'Anda yakin ingin menghentikan [$item]?'; - } - - @override - String sureToDeleteServer(Object server) { - return 'Apakah Anda pasti akan menghapus server [$server]?'; - } - @override String get suspendTip => 'Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.'; @@ -710,6 +692,9 @@ class SId extends S { @override String get urlOrJson => 'URL atau JSON'; + @override + String get useNoPwd => 'Tidak ada kata sandi yang akan digunakan.'; + @override String get user => 'Username'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index e2d5151f..1b84a0cb 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -34,6 +34,11 @@ class SZh extends S { @override String get alterUrl => '备选链接'; + @override + String askContinue(Object msg) { + return '$msg,继续吗?'; + } + @override String get attention => '注意'; @@ -139,6 +144,9 @@ class SZh extends S { @override String get deleteServers => '批量删除服务器'; + @override + String get dirEmpty => '请确保文件夹为空'; + @override String get disabled => '已禁用'; @@ -523,11 +531,6 @@ class SZh extends S { @override String get restoreSuccess => '恢复成功,需要重启App来应用更改'; - @override - String restoreSureWithDate(Object date) { - return '确定恢复 $date 的备份吗?'; - } - @override String get result => '结果'; @@ -619,27 +622,6 @@ class SZh extends S { @override String get success => '成功'; - @override - String sureDelete(Object name) { - return '确定删除 [$name]?'; - } - - @override - String get sureDirEmpty => '请确保文件夹为空'; - - @override - String get sureNoPwd => '确认使用无密码?'; - - @override - String sureStop(Object item) { - return '确定要停止 [$item] 吗?'; - } - - @override - String sureToDeleteServer(Object server) { - return '你确定要删除服务器 [$server] 吗?'; - } - @override String get suspendTip => 'suspend 功能需要 root 权限及 systemd 支持。'; @@ -710,6 +692,9 @@ class SZh extends S { @override String get urlOrJson => '链接或JSON'; + @override + String get useNoPwd => '将会使用无密码。'; + @override String get user => '用户'; @@ -784,6 +769,11 @@ class SZhTw extends SZh { @override String get alterUrl => '備選鏈接'; + @override + String askContinue(Object msg) { + return '$msg,繼續嗎?'; + } + @override String get attention => '注意'; @@ -889,6 +879,9 @@ class SZhTw extends SZh { @override String get deleteServers => '批量刪除服務器'; + @override + String get dirEmpty => '請確保文件夾為空'; + @override String get disabled => '已禁用'; @@ -1273,11 +1266,6 @@ class SZhTw extends SZh { @override String get restoreSuccess => '恢復成功,需要重啓App來應用更改'; - @override - String restoreSureWithDate(Object date) { - return '確定恢復 $date 的備份嗎?'; - } - @override String get result => '結果'; @@ -1369,27 +1357,6 @@ class SZhTw extends SZh { @override String get success => '成功'; - @override - String sureDelete(Object name) { - return '確定刪除 [$name]?'; - } - - @override - String get sureDirEmpty => '請確保文件夾為空'; - - @override - String get sureNoPwd => '確認使用無密碼?'; - - @override - String sureStop(Object item) { - return '確定要停止 [$item] 嗎?'; - } - - @override - String sureToDeleteServer(Object server) { - return '你確定要刪除服務器 [$server] 嗎?'; - } - @override String get suspendTip => 'suspend 功能需要 root 權限及 systemd 支持。'; @@ -1460,6 +1427,9 @@ class SZhTw extends SZh { @override String get urlOrJson => '鏈接或JSON'; + @override + String get useNoPwd => '将使用無密碼。'; + @override String get user => '用戶'; diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 1f08b041..8b3dad73 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -10,6 +10,7 @@ "all": "Alle", "alreadyLastDir": "Bereits im letzten Verzeichnis.", "alterUrl": "Url ändern", + "askContinue": "{msg}, weiter?", "attention": "Achtung", "authRequired": "Autorisierung erforderlich", "auto": "System folgen", @@ -45,6 +46,7 @@ "decompress": "Dekomprimieren", "delete": "Löschen", "deleteServers": "Batch-Löschung von Servern", + "dirEmpty": "Stelle sicher, dass der Ordner leer ist.", "disabled": "Behinderte", "disconnected": "Disconnected", "diskIgnorePath": "Pfad für Datenträger ignorieren", @@ -165,7 +167,6 @@ "restart": "Neustart", "restore": "Wiederherstellen", "restoreSuccess": "Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.", - "restoreSureWithDate": "Bist du sicher, dass du das Backup vom {date} wiederherstellen möchtest?", "result": "Result", "rotateAngel": "Rotationswinkel", "run": "Ausführen", @@ -195,11 +196,6 @@ "stats": "Statistik", "stop": "Stop", "success": "Erfolgreich", - "sureDelete": "Soll [{name}] wirklich gelöscht werden?", - "sureDirEmpty": "Stelle sicher, dass der Ordner leer ist.", - "sureNoPwd": "Bist du sicher, dass du kein Passwort verwenden willst?", - "sureStop": "Sind Sie sicher, dass Sie [{item}] stoppen möchten?", - "sureToDeleteServer": "Bist du sicher, dass du [{server}] löschen willst?", "suspendTip": "Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.", "syncTip": "Nach der automatischen Synchronisierung kann es erforderlich sein, die App neu zu starten, damit bestimmte Änderungen wirksam werden.", "system": "Systeme", @@ -222,6 +218,7 @@ "upload": "Hochladen", "upsideDown": "Upside Down", "urlOrJson": "URL oder JSON", + "useNoPwd": "Es wird kein Passwort verwendet.", "user": "Benutzer", "versionHaveUpdate": "Gefunden: v1.0.{build}, klicke zum Aktualisieren", "versionUnknownUpdate": "Aktuell: v1.0.{build}. Klicken Sie hier, um nach Updates zu suchen", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 2b67f6f8..613d221d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -10,6 +10,7 @@ "all": "All", "alreadyLastDir": "Already in last directory.", "alterUrl": "Alter url", + "askContinue": "{msg}, continue?", "attention": "Attention", "authRequired": "Auth required", "auto": "Auto", @@ -45,6 +46,7 @@ "decompress": "Decompress", "delete": "Delete", "deleteServers": "Batch delete servers", + "dirEmpty": "Make sure dir is empty.", "disabled": "Disabled", "disconnected": "Disconnected", "diskIgnorePath": "Ignore path for disk", @@ -165,7 +167,6 @@ "restart": "Restart", "restore": "Restore", "restoreSuccess": "Restore success. Restart app to apply.", - "restoreSureWithDate": "Are you sure to restore from {date} ?", "result": "Result", "rotateAngel": "Rotation angle", "run": "Run", @@ -195,11 +196,6 @@ "stats": "Stats", "stop": "Stop", "success": "Success", - "sureDelete": "Are you sure to delete [{name}]?", - "sureDirEmpty": "Make sure dir is empty.", - "sureNoPwd": "Are you sure to use no password?", - "sureStop": "Sure to stop [{item}] ?", - "sureToDeleteServer": "Are you sure to delete server [{server}]?", "suspendTip": "The suspend function requires root privileges and systemd support.", "syncTip": "After auto sync, a restart may be required for some changes to take effect.", "system": "System", @@ -222,6 +218,7 @@ "upload": "Upload", "upsideDown": "Upside Down", "urlOrJson": "URL or JSON", + "useNoPwd": "No password will be used.", "user": "User", "versionHaveUpdate": "Found: v1.0.{build}, click to update", "versionUnknownUpdate": "Current: v1.0.{build}, click to check updates", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index c2fbf261..c6482969 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -10,6 +10,7 @@ "all": "Semua", "alreadyLastDir": "Sudah di direktori terakhir.", "alterUrl": "Alter url", + "askContinue": "{msg}, lanjutkan?", "attention": "Perhatian", "authRequired": "Auth diperlukan", "auto": "Auto", @@ -45,6 +46,7 @@ "decompress": "Dekompresi", "delete": "Menghapus", "deleteServers": "Penghapusan server secara batch", + "dirEmpty": "Pastikan dir kosong.", "disabled": "Dengan disabilitas", "disconnected": "Terputus", "diskIgnorePath": "Abaikan jalan untuk disk", @@ -165,7 +167,6 @@ "restart": "Mengulang kembali", "restore": "Memulihkan", "restoreSuccess": "Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.", - "restoreSureWithDate": "Apakah Anda pasti akan memulihkan dari {date}?", "result": "Hasil", "rotateAngel": "Sudut rotasi", "run": "Berlari", @@ -195,11 +196,6 @@ "stats": "Statistik", "stop": "Berhenti", "success": "Kesuksesan", - "sureDelete": "Apakah Anda pasti akan menghapus [{name}]?", - "sureDirEmpty": "Pastikan dir kosong.", - "sureNoPwd": "Apakah Anda pasti tidak menggunakan kata sandi?", - "sureStop": "Anda yakin ingin menghentikan [{item}]?", - "sureToDeleteServer": "Apakah Anda pasti akan menghapus server [{server}]?", "suspendTip": "Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.", "syncTip": "Setelah sinkronisasi otomatis, mungkin perlu memulai ulang aplikasi agar perubahan tertentu dapat diterapkan.", "system": "Sistem", @@ -222,6 +218,7 @@ "upload": "Mengunggah", "upsideDown": "Terbalik", "urlOrJson": "URL atau JSON", + "useNoPwd": "Tidak ada kata sandi yang akan digunakan.", "user": "Username", "versionHaveUpdate": "Ditemukan: v1.0.{build}, klik untuk memperbarui", "versionUnknownUpdate": "Saat ini: v1.0.{build}. Klik untuk memeriksa pembaruan.", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 0839c46a..bfa937c6 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -10,6 +10,7 @@ "all": "所有", "alreadyLastDir": "已经是最上层目录了", "alterUrl": "备选链接", + "askContinue": "{msg},继续吗?", "attention": "注意", "authRequired": "需要认证", "auto": "自动", @@ -45,6 +46,7 @@ "decompress": "解压缩", "delete": "删除", "deleteServers": "批量删除服务器", + "dirEmpty": "请确保文件夹为空", "disabled": "已禁用", "disconnected": "连接断开", "diskIgnorePath": "忽略的磁盘路径", @@ -165,7 +167,6 @@ "restart": "重启", "restore": "恢复", "restoreSuccess": "恢复成功,需要重启App来应用更改", - "restoreSureWithDate": "确定恢复 {date} 的备份吗?", "result": "结果", "rotateAngel": "旋转角度", "run": "运行", @@ -195,11 +196,6 @@ "stats": "统计", "stop": "停止", "success": "成功", - "sureDelete": "确定删除 [{name}]?", - "sureDirEmpty": "请确保文件夹为空", - "sureNoPwd": "确认使用无密码?", - "sureStop": "确定要停止 [{item}] 吗?", - "sureToDeleteServer": "你确定要删除服务器 [{server}] 吗?", "suspendTip": "suspend 功能需要 root 权限及 systemd 支持。", "syncTip": "在自动同步后,可能需要重新启动,某些更改才能生效。", "system": "系统", @@ -222,6 +218,7 @@ "upload": "上传", "upsideDown": "上下交换", "urlOrJson": "链接或JSON", + "useNoPwd": "将会使用无密码。", "user": "用户", "versionHaveUpdate": "找到新版本:v1.0.{build}, 点击更新", "versionUnknownUpdate": "当前:v1.0.{build},点击检查更新", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 0ef0baee..72fb4249 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -10,6 +10,7 @@ "all": "所有", "alreadyLastDir": "已經是最上層目錄了", "alterUrl": "備選鏈接", + "askContinue": "{msg},繼續嗎?", "attention": "注意", "authRequired": "需要認證", "auto": "自動", @@ -45,6 +46,7 @@ "decompress": "解壓縮", "delete": "刪除", "deleteServers": "批量刪除服務器", + "dirEmpty": "請確保文件夾為空", "disabled": "已禁用", "disconnected": "連接斷開", "diskIgnorePath": "忽略的磁盤路徑", @@ -165,7 +167,6 @@ "restart": "重啓", "restore": "恢復", "restoreSuccess": "恢復成功,需要重啓App來應用更改", - "restoreSureWithDate": "確定恢復 {date} 的備份嗎?", "result": "結果", "rotateAngel": "旋轉角度", "run": "運行", @@ -195,11 +196,6 @@ "stats": "統計", "stop": "停止", "success": "成功", - "sureDelete": "確定刪除 [{name}]?", - "sureDirEmpty": "請確保文件夾為空", - "sureNoPwd": "確認使用無密碼?", - "sureStop": "確定要停止 [{item}] 嗎?", - "sureToDeleteServer": "你確定要刪除服務器 [{server}] 嗎?", "suspendTip": "suspend 功能需要 root 權限及 systemd 支持。", "syncTip": "在自動同步後,可能需要重新啟動,某些更改才能生效。", "system": "系統", @@ -222,6 +218,7 @@ "upload": "上傳", "upsideDown": "上下交換", "urlOrJson": "鏈接或JSON", + "useNoPwd": "将使用無密碼。", "user": "用戶", "versionHaveUpdate": "找到新版本:v1.0.{build}, 點擊更新", "versionUnknownUpdate": "當前:v1.0.{build},點擊檢查更新", diff --git a/lib/view/page/backup.dart b/lib/view/page/backup.dart index b96c3b96..fd70640d 100644 --- a/lib/view/page/backup.dart +++ b/lib/view/page/backup.dart @@ -153,7 +153,9 @@ class BackupPage extends StatelessWidget { await context.showRoundDialog( title: Text(l10n.restore), - child: Text(l10n.restoreSureWithDate(backup.date)), + child: Text(l10n.askContinue( + '${l10n.restore} ${l10n.backup}(${backup.date})', + )), actions: [ TextButton( onPressed: () => context.pop(), diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index 3a0bea18..04b66624 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -249,7 +249,7 @@ class _DockerManagePageState extends State { void _showImageRmDialog(DockerImage e) { context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureDelete(e.repo)), + child: Text(l10n.askContinue('${l10n.delete} Image(${e.repo})')), actions: [ TextButton( onPressed: () => context.pop(), @@ -365,7 +365,9 @@ class _DockerManagePageState extends State { case DockerMenuType.rm: context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureDelete(dItem.name)), + child: Text(l10n.askContinue( + '${l10n.delete} Container(${dItem.name})', + )), actions: [ TextButton( onPressed: () async { diff --git a/lib/view/page/private_key/edit.dart b/lib/view/page/private_key/edit.dart index 8c1eec95..ce4a3010 100644 --- a/lib/view/page/private_key/edit.dart +++ b/lib/view/page/private_key/edit.dart @@ -91,7 +91,9 @@ class _PrivateKeyEditPageState extends State { onPressed: () { context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureDelete(widget.pki!.id)), + child: Text(l10n.askContinue( + '${l10n.delete} ${l10n.privateKey}(${widget.pki!.id})', + )), actions: [ TextButton( onPressed: () { diff --git a/lib/view/page/process.dart b/lib/view/page/process.dart index ee61935d..cd71dede 100644 --- a/lib/view/page/process.dart +++ b/lib/view/page/process.dart @@ -160,7 +160,9 @@ class _ProcessPageState extends State { onLongPress: () { context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureStop(proc.pid)), + child: Text(l10n.askContinue( + '${l10n.stop} ${l10n.process}(${proc.pid})', + )), actions: [ TextButton( onPressed: () async { diff --git a/lib/view/page/server/edit.dart b/lib/view/page/server/edit.dart index ecebe1b2..a169a62f 100644 --- a/lib/view/page/server/edit.dart +++ b/lib/view/page/server/edit.dart @@ -111,7 +111,9 @@ class _ServerEditPageState extends State { onPressed: () { context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureToDeleteServer(widget.spi!.name)), + child: Text(l10n.askContinue( + '${l10n.delete} ${l10n.server}(${widget.spi!.name})', + )), actions: [ TextButton( onPressed: () { @@ -315,14 +317,14 @@ class _ServerEditPageState extends State { } void _onSave() async { - if (_ipController.text == '') { + if (_ipController.text.isEmpty) { context.showSnackBar(l10n.plzEnterHost); return; } - if (_keyIdx.value == null && _passwordController.text == '') { + if (_keyIdx.value == null && _passwordController.text.isEmpty) { final cancel = await context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureNoPwd), + child: Text(l10n.askContinue(l10n.useNoPwd)), actions: [ TextButton( onPressed: () => context.pop(false), diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 5771b636..489c0ea5 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -3,6 +3,7 @@ import 'package:circle_chart/circle_chart.dart'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:provider/provider.dart'; +import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/media_queryx.dart'; @@ -244,35 +245,38 @@ class _ServerPageState extends State mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ IconButton( - onPressed: () async { - if (Stores.first.showSuspendTip.fetch()) { - await context.showRoundDialog( - title: Text(l10n.attention), - child: Text(l10n.suspendTip), + onPressed: () => _askFor( + func: () async { + if (Stores.first.showSuspendTip.fetch()) { + await context.showRoundDialog( + title: Text(l10n.attention), + child: Text(l10n.suspendTip), + ); + Stores.first.showSuspendTip.put(false); + } + srv.client?.execWithPwd( + ShellFunc.suspend.exec, + context: context, ); - Stores.first.showSuspendTip.put(false); - } - srv.client?.execWithPwd( - ShellFunc.suspend.exec, - context: context, - ); - }, + }, + msg: 'Suspend ${srv.spi.name}', + ), icon: const Icon(Icons.stop), tooltip: 'Suspend', ), IconButton( - onPressed: () => srv.client?.execWithPwd( + onPressed: () => _askFor(func: () => srv.client?.execWithPwd( ShellFunc.shutdown.exec, context: context, - ), + ), msg: 'Shutdown ${srv.spi.name}',), icon: const Icon(Icons.power_off), tooltip: 'Shutdown', ), IconButton( - onPressed: () => srv.client?.execWithPwd( + onPressed: () => _askFor(func: () => srv.client?.execWithPwd( ShellFunc.reboot.exec, context: context, - ), + ), msg: 'Reboot ${srv.spi.name}',), icon: const Icon(Icons.restart_alt), tooltip: 'Reboot', ), @@ -531,4 +535,20 @@ class _ServerPageState extends State } return 107; } + + void _askFor({required void Function() func, required String msg}) { + context.showRoundDialog( + title: Text(l10n.attention), + child: Text(l10n.askContinue(msg)), + actions: [ + TextButton( + onPressed: () { + context.pop(); + func(); + }, + child: Text(l10n.ok), + ), + ], + ); + } } diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 41fb5074..f430d1fc 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -105,7 +105,9 @@ class _SettingPageState extends State { child: InkWell( onTap: () => context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureDelete(l10n.all)), + child: Text(l10n.askContinue( + '${l10n.delete}: **${l10n.all}** ${l10n.setting}', + )), actions: [ TextButton( onPressed: () { @@ -113,8 +115,10 @@ class _SettingPageState extends State { context.pop(); context.showSnackBar(l10n.success); }, - child: Text(l10n.ok, - style: const TextStyle(color: Colors.red)), + child: Text( + l10n.ok, + style: const TextStyle(color: Colors.red), + ), ), ], ), @@ -880,7 +884,9 @@ class _SettingPageState extends State { (e) => TextButton( onPressed: () => context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureDelete(e)), + child: Text(l10n.askContinue( + '${l10n.delete} ${l10n.server}($e)', + )), actions: [ TextButton( onPressed: () => Pros.server.delServer(e), diff --git a/lib/view/page/snippet/edit.dart b/lib/view/page/snippet/edit.dart index bb79848f..f8ef9362 100644 --- a/lib/view/page/snippet/edit.dart +++ b/lib/view/page/snippet/edit.dart @@ -1,6 +1,7 @@ import 'package:after_layout/after_layout.dart'; import 'package:flutter/material.dart'; import 'package:toolbox/core/extension/context/common.dart'; +import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/data/res/provider.dart'; @@ -56,8 +57,22 @@ class _SnippetEditPageState extends State return [ IconButton( onPressed: () { - Pros.snippet.del(widget.snippet!); - context.pop(); + context.showRoundDialog( + title: Text(l10n.attention), + child: Text(l10n.askContinue( + '${l10n.delete} ${l10n.snippet}(${widget.snippet!.name})', + )), + actions: [ + TextButton( + onPressed: () { + Pros.snippet.del(widget.snippet!); + context.pop(); + context.pop(); + }, + child: Text(l10n.ok, style: UIs.textRed), + ), + ], + ); }, tooltip: l10n.delete, icon: const Icon(Icons.delete), diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index f0acc791..904ca54b 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -410,8 +410,9 @@ class _SftpPageState extends State with AfterLayoutMixin { context.pop(); final isDir = file.attr.isDirectory; final useRmrf = Stores.setting.sftpRmrfDir.fetch(); - final dirText = (isDir && !useRmrf) ? '\n${l10n.sureDirEmpty}' : ''; - final text = '${l10n.sureDelete(file.filename)}$dirText'; + final dirText = (isDir && !useRmrf) ? '\n${l10n.dirEmpty}' : ''; + final text = l10n.askContinue( + '${l10n.delete} ${l10n.files}(${file.filename})\n$dirText'); final child = Text(text); context.showRoundDialog( child: child, @@ -475,7 +476,7 @@ class _SftpPageState extends State with AfterLayoutMixin { ), TextButton( onPressed: () async { - if (textController.text == '') { + if (textController.text.isEmpty) { context.showRoundDialog( child: Text(l10n.fieldMustNotEmpty), actions: [ @@ -512,7 +513,7 @@ class _SftpPageState extends State with AfterLayoutMixin { actions: [ TextButton( onPressed: () async { - if (textController.text == '') { + if (textController.text.isEmpty) { context.showRoundDialog( title: Text(l10n.attention), child: Text(l10n.fieldMustNotEmpty), @@ -553,7 +554,7 @@ class _SftpPageState extends State with AfterLayoutMixin { TextButton(onPressed: () => context.pop(), child: Text(l10n.cancel)), TextButton( onPressed: () async { - if (textController.text == '') { + if (textController.text.isEmpty) { context.showRoundDialog( title: Text(l10n.attention), child: Text(l10n.fieldMustNotEmpty), @@ -566,7 +567,7 @@ class _SftpPageState extends State with AfterLayoutMixin { ); return; } - await _status.client!.rename(file.filename, textController.text); + await _status.client?.rename(file.filename, textController.text); context.pop(); _listDir(); }, @@ -610,7 +611,8 @@ class _SftpPageState extends State with AfterLayoutMixin { /// Only return true if the path is changed Future _listDir() async { - context.showLoadingDialog(); + // Allow dismiss, because may this op will take a long time + context.showLoadingDialog(barrierDismiss: true); if (_status.client == null) { final sftpc = await _client?.sftp(); _status.client = sftpc; diff --git a/lib/view/page/storage/sftp_mission.dart b/lib/view/page/storage/sftp_mission.dart index 8ffde6a2..5b32c36c 100644 --- a/lib/view/page/storage/sftp_mission.dart +++ b/lib/view/page/storage/sftp_mission.dart @@ -137,7 +137,9 @@ class _SftpMissionPageState extends State { return IconButton( onPressed: () => context.showRoundDialog( title: Text(l10n.attention), - child: Text(l10n.sureDelete(name)), + child: Text(l10n.askContinue( + '${l10n.delete} ${l10n.mission}($name)', + )), actions: [ TextButton( onPressed: () {