mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
new: battery (#235)
This commit is contained in:
@@ -230,6 +230,12 @@ abstract class S {
|
||||
/// **'Backup version is not match.'**
|
||||
String get backupVersionNotMatch;
|
||||
|
||||
/// No description provided for @battery.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Battery'**
|
||||
String get battery;
|
||||
|
||||
/// No description provided for @bgRun.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
@@ -1514,6 +1520,12 @@ abstract class S {
|
||||
/// **'Upside Down'**
|
||||
String get upsideDown;
|
||||
|
||||
/// No description provided for @uptime.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Uptime'**
|
||||
String get uptime;
|
||||
|
||||
/// No description provided for @urlOrJson.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -72,6 +72,9 @@ class SDe extends S {
|
||||
@override
|
||||
String get backupVersionNotMatch => 'Die Backup-Version stimmt nicht überein.';
|
||||
|
||||
@override
|
||||
String get battery => 'Batterie';
|
||||
|
||||
@override
|
||||
String get bgRun => 'Hintergrundaktualisierung';
|
||||
|
||||
@@ -746,6 +749,9 @@ class SDe extends S {
|
||||
@override
|
||||
String get upsideDown => 'Upside Down';
|
||||
|
||||
@override
|
||||
String get uptime => 'Uptime';
|
||||
|
||||
@override
|
||||
String get urlOrJson => 'URL oder JSON';
|
||||
|
||||
|
||||
@@ -72,6 +72,9 @@ class SEn extends S {
|
||||
@override
|
||||
String get backupVersionNotMatch => 'Backup version is not match.';
|
||||
|
||||
@override
|
||||
String get battery => 'Battery';
|
||||
|
||||
@override
|
||||
String get bgRun => 'Run in backgroud';
|
||||
|
||||
@@ -746,6 +749,9 @@ class SEn extends S {
|
||||
@override
|
||||
String get upsideDown => 'Upside Down';
|
||||
|
||||
@override
|
||||
String get uptime => 'Uptime';
|
||||
|
||||
@override
|
||||
String get urlOrJson => 'URL or JSON';
|
||||
|
||||
|
||||
@@ -72,6 +72,9 @@ class SId extends S {
|
||||
@override
|
||||
String get backupVersionNotMatch => 'Versi cadangan tidak cocok.';
|
||||
|
||||
@override
|
||||
String get battery => 'Baterai';
|
||||
|
||||
@override
|
||||
String get bgRun => 'Jalankan di Backgroud';
|
||||
|
||||
@@ -746,6 +749,9 @@ class SId extends S {
|
||||
@override
|
||||
String get upsideDown => 'Terbalik';
|
||||
|
||||
@override
|
||||
String get uptime => 'Uptime';
|
||||
|
||||
@override
|
||||
String get urlOrJson => 'URL atau JSON';
|
||||
|
||||
|
||||
@@ -72,6 +72,9 @@ class SZh extends S {
|
||||
@override
|
||||
String get backupVersionNotMatch => '备份版本不匹配,无法恢复';
|
||||
|
||||
@override
|
||||
String get battery => '电池';
|
||||
|
||||
@override
|
||||
String get bgRun => '后台运行';
|
||||
|
||||
@@ -746,6 +749,9 @@ class SZh extends S {
|
||||
@override
|
||||
String get upsideDown => '上下交换';
|
||||
|
||||
@override
|
||||
String get uptime => '启动时长';
|
||||
|
||||
@override
|
||||
String get urlOrJson => '链接或JSON';
|
||||
|
||||
@@ -870,6 +876,9 @@ class SZhTw extends SZh {
|
||||
@override
|
||||
String get backupVersionNotMatch => '備份版本不匹配,無法還原';
|
||||
|
||||
@override
|
||||
String get battery => '電池';
|
||||
|
||||
@override
|
||||
String get bgRun => '背景運行';
|
||||
|
||||
@@ -1544,6 +1553,9 @@ class SZhTw extends SZh {
|
||||
@override
|
||||
String get upsideDown => '上下交換';
|
||||
|
||||
@override
|
||||
String get uptime => '啟動時長';
|
||||
|
||||
@override
|
||||
String get urlOrJson => '鏈接或JSON';
|
||||
|
||||
|
||||
@@ -586,7 +586,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -596,7 +596,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -720,7 +720,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -730,7 +730,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -748,7 +748,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -758,7 +758,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -779,7 +779,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -792,7 +792,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
@@ -818,7 +818,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -831,7 +831,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -854,7 +854,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -867,7 +867,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -890,7 +890,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -902,7 +902,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||
@@ -931,7 +931,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -943,7 +943,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||
PRODUCT_NAME = ServerBox;
|
||||
@@ -969,7 +969,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 674;
|
||||
CURRENT_PROJECT_VERSION = 678;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -981,7 +981,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.674;
|
||||
MARKETING_VERSION = 1.0.678;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||
PRODUCT_NAME = ServerBox;
|
||||
|
||||
12
lib/core/extension/status_cmd_type.dart
Normal file
12
lib/core/extension/status_cmd_type.dart
Normal file
@@ -0,0 +1,12 @@
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
|
||||
extension StatusCmdTypeX on StatusCmdType {
|
||||
String get i18n => switch (this) {
|
||||
StatusCmdType.sys => l10n.system,
|
||||
StatusCmdType.host => l10n.host,
|
||||
StatusCmdType.uptime => l10n.uptime,
|
||||
StatusCmdType.battery => l10n.battery,
|
||||
final val => val.name,
|
||||
};
|
||||
}
|
||||
@@ -200,7 +200,8 @@ enum StatusCmdType {
|
||||
tempVal,
|
||||
host,
|
||||
diskio,
|
||||
nvdia,
|
||||
battery,
|
||||
nvidia,
|
||||
;
|
||||
}
|
||||
|
||||
@@ -219,6 +220,7 @@ const _statusCmds = [
|
||||
'cat /sys/class/thermal/thermal_zone*/temp',
|
||||
'hostname',
|
||||
'cat /proc/diskstats',
|
||||
'cat /sys/class/power_supply/*/capacity',
|
||||
'nvidia-smi -q -x',
|
||||
];
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:dartssh2/dartssh2.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
import 'package:toolbox/data/model/server/conn.dart';
|
||||
import 'package:toolbox/data/model/server/cpu.dart';
|
||||
import 'package:toolbox/data/model/server/disk.dart';
|
||||
@@ -47,8 +48,6 @@ class ServerStatus {
|
||||
Cpus cpu;
|
||||
Memory mem;
|
||||
Swap swap;
|
||||
String sysVer;
|
||||
String uptime;
|
||||
List<Disk> disk;
|
||||
Conn tcp;
|
||||
NetSpeed netSpeed;
|
||||
@@ -57,6 +56,7 @@ class ServerStatus {
|
||||
String? err;
|
||||
DiskIO diskIO;
|
||||
List<NvidiaSmiItem>? nvidia;
|
||||
final Map<StatusCmdType, String> more = {};
|
||||
|
||||
/// Whether is connectting, parsing and etc.
|
||||
bool _isBusy = false;
|
||||
@@ -64,8 +64,6 @@ class ServerStatus {
|
||||
ServerStatus({
|
||||
required this.cpu,
|
||||
required this.mem,
|
||||
required this.sysVer,
|
||||
required this.uptime,
|
||||
required this.disk,
|
||||
required this.tcp,
|
||||
required this.netSpeed,
|
||||
|
||||
@@ -49,10 +49,18 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
try {
|
||||
final sys = _parseSysVer(
|
||||
StatusCmdType.sys.find(segments),
|
||||
StatusCmdType.host.find(segments),
|
||||
);
|
||||
if (sys != null) {
|
||||
req.ss.sysVer = sys;
|
||||
req.ss.more[StatusCmdType.sys] = sys;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
final host = StatusCmdType.host.find(segments);
|
||||
if (host.isNotEmpty) {
|
||||
req.ss.more[StatusCmdType.host] = host;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
@@ -93,7 +101,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
try {
|
||||
final uptime = _parseUpTime(StatusCmdType.uptime.find(segments));
|
||||
if (uptime != null) {
|
||||
req.ss.uptime = uptime;
|
||||
req.ss.more[StatusCmdType.uptime] = uptime;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
@@ -118,6 +126,16 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
final battery = StatusCmdType.battery.find(segments);
|
||||
if (battery.isNotEmpty && !battery.contains('No such')) {
|
||||
req.ss.more[StatusCmdType.battery] = battery;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
}
|
||||
|
||||
return req.ss;
|
||||
}
|
||||
|
||||
@@ -134,7 +152,7 @@ Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.sysVer = BSDStatusCmdType.sys.find(segments);
|
||||
req.ss.more[StatusCmdType.sys] = BSDStatusCmdType.sys.find(segments);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
}
|
||||
@@ -154,7 +172,7 @@ Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
|
||||
try {
|
||||
final uptime = _parseUpTime(BSDStatusCmdType.uptime.find(segments));
|
||||
if (uptime != null) {
|
||||
req.ss.uptime = uptime;
|
||||
req.ss.more[StatusCmdType.uptime] = uptime;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
@@ -181,10 +199,10 @@ String? _parseUpTime(String raw) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String? _parseSysVer(String raw, String hostname) {
|
||||
String? _parseSysVer(String raw) {
|
||||
final s = raw.split('=');
|
||||
if (s.length == 2) {
|
||||
return s[1].replaceAll('"', '').replaceFirst('\n', '');
|
||||
}
|
||||
return hostname.isEmpty ? null : hostname;
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
class BuildData {
|
||||
static const String name = "ServerBox";
|
||||
static const int build = 674;
|
||||
static const int build = 678;
|
||||
static const String engine = "3.16.3";
|
||||
static const String buildAt = "2023-12-12 18:14:36";
|
||||
static const int modifications = 29;
|
||||
static const String buildAt = "2023-12-17 18:43:29";
|
||||
static const int modifications = 8;
|
||||
static const int script = 31;
|
||||
}
|
||||
|
||||
@@ -40,8 +40,6 @@ abstract final class InitStatus {
|
||||
free: 1,
|
||||
avail: 1,
|
||||
),
|
||||
sysVer: 'Loading...',
|
||||
uptime: '',
|
||||
disk: [
|
||||
const Disk(
|
||||
dev: '/',
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"backupAndRestore": "Backup und Wiederherstellung",
|
||||
"backupTip": "Das Backup wird nur einfach verschlüsselt.\nBitte bewahre die Datei sicher auf.",
|
||||
"backupVersionNotMatch": "Die Backup-Version stimmt nicht überein.",
|
||||
"battery": "Batterie",
|
||||
"bgRun": "Hintergrundaktualisierung",
|
||||
"bioAuth": "Biozertifizierung",
|
||||
"canPullRefresh": "Danach: herunterziehen zum Aktualisieren",
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"backupAndRestore": "Backup and Restore",
|
||||
"backupTip": "The exported data is simply encrypted. \nPlease keep it safe.",
|
||||
"backupVersionNotMatch": "Backup version is not match.",
|
||||
"battery": "Battery",
|
||||
"bgRun": "Run in backgroud",
|
||||
"bioAuth": "Biometric auth",
|
||||
"canPullRefresh": "You can pull to refresh.",
|
||||
@@ -236,6 +237,7 @@
|
||||
"updateTipTooLow": "Current version is too low, please update to v1.0.{newest}",
|
||||
"upload": "Upload",
|
||||
"upsideDown": "Upside Down",
|
||||
"uptime": "Uptime",
|
||||
"urlOrJson": "URL or JSON",
|
||||
"useNoPwd": "No password will be used.",
|
||||
"user": "User",
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"backupAndRestore": "Cadangan dan Pulihkan",
|
||||
"backupTip": "Data yang diekspor hanya dienkripsi.\nTolong jaga keamanannya.",
|
||||
"backupVersionNotMatch": "Versi cadangan tidak cocok.",
|
||||
"battery": "Baterai",
|
||||
"bgRun": "Jalankan di Backgroud",
|
||||
"bioAuth": "Biosertifikasi",
|
||||
"canPullRefresh": "Anda dapat menarik untuk menyegarkan.",
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"backupAndRestore": "备份和恢复",
|
||||
"backupTip": "导出的数据仅进行了简单加密,请妥善保管。",
|
||||
"backupVersionNotMatch": "备份版本不匹配,无法恢复",
|
||||
"battery": "电池",
|
||||
"bgRun": "后台运行",
|
||||
"bioAuth": "生物认证",
|
||||
"canPullRefresh": "可以下拉刷新",
|
||||
@@ -236,6 +237,7 @@
|
||||
"updateTipTooLow": "当前版本过低,请升级至 v1.0.{newest}",
|
||||
"upload": "上传",
|
||||
"upsideDown": "上下交换",
|
||||
"uptime": "启动时长",
|
||||
"urlOrJson": "链接或JSON",
|
||||
"useNoPwd": "将会使用无密码。",
|
||||
"user": "用户",
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"backupAndRestore": "備份和還原",
|
||||
"backupTip": "導出的數據僅進行了簡單加密,請妥善保管。",
|
||||
"backupVersionNotMatch": "備份版本不匹配,無法還原",
|
||||
"battery": "電池",
|
||||
"bgRun": "背景運行",
|
||||
"bioAuth": "生物認證",
|
||||
"canPullRefresh": "可以下拉更新",
|
||||
@@ -236,6 +237,7 @@
|
||||
"updateTipTooLow": "當前版本過低,請升級至 v1.0.{newest}",
|
||||
"upload": "上傳",
|
||||
"upsideDown": "上下交換",
|
||||
"uptime": "啟動時長",
|
||||
"urlOrJson": "鏈接或JSON",
|
||||
"useNoPwd": "将使用無密碼。",
|
||||
"user": "用戶",
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:get_it/get_it.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/route.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
import 'package:toolbox/data/model/server/disk.dart';
|
||||
import 'package:toolbox/data/provider/server.dart';
|
||||
import 'package:toolbox/data/res/provider.dart';
|
||||
@@ -239,7 +240,7 @@ class _FullScreenPageState extends State<FullScreenPage> with AfterLayoutMixin {
|
||||
final topRightStr = _getTopRightStr(
|
||||
cs,
|
||||
ss.temps.first,
|
||||
ss.uptime,
|
||||
ss.more[StatusCmdType.uptime] ?? '',
|
||||
ss.err,
|
||||
);
|
||||
return Text(
|
||||
|
||||
@@ -4,6 +4,7 @@ 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/order.dart';
|
||||
import 'package:toolbox/core/extension/status_cmd_type.dart';
|
||||
import 'package:toolbox/core/extension/widget.dart';
|
||||
import 'package:toolbox/data/model/server/cpu.dart';
|
||||
import 'package:toolbox/data/model/server/disk.dart';
|
||||
@@ -203,23 +204,25 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
|
||||
Widget _buildUpTimeAndSys(ServerStatus ss) {
|
||||
return CardX(
|
||||
child: Padding(
|
||||
padding: UIs.roundRectCardPadding,
|
||||
child: Row(
|
||||
child: ExpandTile(
|
||||
leading: const Icon(Icons.computer),
|
||||
initiallyExpanded: ss.more.entries.length < 7,
|
||||
title: Text(l10n.about),
|
||||
childrenPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 17,
|
||||
vertical: 7,
|
||||
),
|
||||
children: ss.more.entries
|
||||
.map(
|
||||
(e) => Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
ss.sysVer,
|
||||
style: UIs.textSize11,
|
||||
textScaler: _textFactor,
|
||||
),
|
||||
Text(
|
||||
ss.uptime,
|
||||
style: UIs.textSize11,
|
||||
textScaler: _textFactor,
|
||||
),
|
||||
Text(e.key.i18n, style: UIs.textSize13),
|
||||
Text(e.value, style: UIs.textSize11Grey)
|
||||
],
|
||||
),
|
||||
).padding(const EdgeInsets.symmetric(vertical: 1)),
|
||||
)
|
||||
.toList(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -370,7 +370,7 @@ class _ServerPageState extends State<ServerPage>
|
||||
final topRightStr = _getTopRightStr(
|
||||
cs,
|
||||
ss.temps.first,
|
||||
ss.uptime,
|
||||
ss.more[StatusCmdType.uptime] ?? '',
|
||||
ss.err,
|
||||
);
|
||||
if (cs == ServerState.failed && ss.err != null) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:toolbox/core/extension/ssh_client.dart';
|
||||
import 'package:toolbox/core/extension/uint8list.dart';
|
||||
import 'package:toolbox/core/utils/platform/base.dart';
|
||||
import 'package:toolbox/core/utils/platform/path.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
import 'package:toolbox/data/model/pkg/manager.dart';
|
||||
import 'package:toolbox/data/model/server/dist.dart';
|
||||
import 'package:toolbox/data/res/path.dart';
|
||||
@@ -238,7 +239,11 @@ Future<void> _onPkg(BuildContext context, ServerPrivateInfo spi) async {
|
||||
context.showSnackBar(l10n.noClient);
|
||||
return;
|
||||
}
|
||||
final sys = server.status.sysVer;
|
||||
final sys = server.status.more[StatusCmdType.sys];
|
||||
if (sys == null) {
|
||||
context.showSnackBar(l10n.noResult);
|
||||
return;
|
||||
}
|
||||
final pkg = PkgManager.fromDist(sys.dist);
|
||||
|
||||
// Update pkg list
|
||||
|
||||
Reference in New Issue
Block a user