From eef38f0949537291e360c9d9cb9b4df2681b1739 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Fri, 21 Jul 2023 16:56:50 +0800 Subject: [PATCH] #74 probably fix --- .dart_tool/flutter_gen/gen_l10n/l10n.dart | 18 ++++++++++ .dart_tool/flutter_gen/gen_l10n/l10n_de.dart | 9 +++++ .dart_tool/flutter_gen/gen_l10n/l10n_en.dart | 9 +++++ .dart_tool/flutter_gen/gen_l10n/l10n_zh.dart | 18 ++++++++++ lib/data/model/app/net_view.dart | 20 ++++++++--- lib/data/model/app/net_view.g.dart | 10 +++--- lib/data/model/server/cpu.dart | 9 +++++ lib/data/model/server/net_speed.dart | 12 +++++++ lib/l10n/app_de.arb | 3 ++ lib/l10n/app_en.arb | 3 ++ lib/l10n/app_zh.arb | 3 ++ lib/l10n/app_zh_tw.arb | 3 ++ lib/view/page/server/detail.dart | 36 ++++++++++---------- lib/view/page/setting.dart | 4 +-- 14 files changed, 128 insertions(+), 29 deletions(-) diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n.dart b/.dart_tool/flutter_gen/gen_l10n/l10n.dart index 6288eb1a..0d3f35c2 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n.dart @@ -234,6 +234,12 @@ abstract class S { /// **'Command'** String get cmd; + /// No description provided for @conn. + /// + /// In en, this message translates to: + /// **'Connection'** + String get conn; + /// No description provided for @containerName. /// /// In en, this message translates to: @@ -1092,6 +1098,12 @@ abstract class S { /// **'Snippet'** String get snippet; + /// No description provided for @speed. + /// + /// In en, this message translates to: + /// **'Speed'** + String get speed; + /// No description provided for @spentTime. /// /// In en, this message translates to: @@ -1188,6 +1200,12 @@ abstract class S { /// **'Times'** String get times; + /// No description provided for @traffic. + /// + /// In en, this message translates to: + /// **'Traffic'** + String get traffic; + /// No description provided for @ttl. /// /// 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 992d9ee6..e0c5e690 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -73,6 +73,9 @@ class SDe extends S { @override String get cmd => 'Command'; + @override + String get conn => 'Verbindung'; + @override String get containerName => 'Container Name'; @@ -528,6 +531,9 @@ class SDe extends S { @override String get snippet => 'Snippet'; + @override + String get speed => 'Tempo'; + @override String spentTime(Object time) { return 'Benötigte Zeit: $time'; @@ -584,6 +590,9 @@ class SDe extends S { @override String get times => 'x'; + @override + String get traffic => 'Durchflussmenge'; + @override String get ttl => 'ttl'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart index 471acdaa..6d894f68 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart @@ -73,6 +73,9 @@ class SEn extends S { @override String get cmd => 'Command'; + @override + String get conn => 'Connection'; + @override String get containerName => 'Container name'; @@ -528,6 +531,9 @@ class SEn extends S { @override String get snippet => 'Snippet'; + @override + String get speed => 'Speed'; + @override String spentTime(Object time) { return 'Spent time: $time'; @@ -584,6 +590,9 @@ class SEn extends S { @override String get times => 'Times'; + @override + String get traffic => 'Traffic'; + @override String get ttl => 'ttl'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index 4fc97cf2..a8a0e271 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -73,6 +73,9 @@ class SZh extends S { @override String get cmd => '命令'; + @override + String get conn => '连接'; + @override String get containerName => '容器名'; @@ -528,6 +531,9 @@ class SZh extends S { @override String get snippet => '代码片段'; + @override + String get speed => '速度'; + @override String spentTime(Object time) { return '耗时: $time'; @@ -584,6 +590,9 @@ class SZh extends S { @override String get times => '次'; + @override + String get traffic => '流量'; + @override String get ttl => '缓存时间'; @@ -728,6 +737,9 @@ class SZhTw extends SZh { @override String get cmd => '命令'; + @override + String get conn => '連接'; + @override String get containerName => '容器名稱'; @@ -1183,6 +1195,9 @@ class SZhTw extends SZh { @override String get snippet => '程式片段'; + @override + String get speed => '速度'; + @override String spentTime(Object time) { return '耗時: $time'; @@ -1239,6 +1254,9 @@ class SZhTw extends SZh { @override String get times => '次'; + @override + String get traffic => '流量'; + @override String get ttl => '緩存時間'; diff --git a/lib/data/model/app/net_view.dart b/lib/data/model/app/net_view.dart index 2add87b8..209659f2 100644 --- a/lib/data/model/app/net_view.dart +++ b/lib/data/model/app/net_view.dart @@ -1,4 +1,5 @@ import 'package:hive_flutter/hive_flutter.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:toolbox/data/model/server/server_status.dart'; part 'net_view.g.dart'; @@ -6,15 +7,26 @@ part 'net_view.g.dart'; @HiveType(typeId: 5) enum NetViewType { @HiveField(0) - count, + conn, @HiveField(1) speed, @HiveField(2) - size; + traffic; + + String l10n(S s) { + switch (this) { + case NetViewType.conn: + return s.conn; + case NetViewType.traffic: + return s.traffic; + case NetViewType.speed: + return s.speed; + } + } NetViewData build(ServerStatus ss) { switch (this) { - case NetViewType.count: + case NetViewType.conn: return NetViewData( 'Conn:\n${ss.tcp.maxConn}', 'Fail:\n${ss.tcp.fail}', @@ -24,7 +36,7 @@ enum NetViewType { 'In:\n${ss.netSpeed.speedIn(all: true)}', 'Out:\n${ss.netSpeed.speedOut(all: true)}', ); - case NetViewType.size: + case NetViewType.traffic: return NetViewData( 'In:\n${ss.netSpeed.sizeIn(all: true)}', 'Out:\n${ss.netSpeed.sizeOut(all: true)}', diff --git a/lib/data/model/app/net_view.g.dart b/lib/data/model/app/net_view.g.dart index a28456de..7008fe8b 100644 --- a/lib/data/model/app/net_view.g.dart +++ b/lib/data/model/app/net_view.g.dart @@ -14,26 +14,26 @@ class NetViewTypeAdapter extends TypeAdapter { NetViewType read(BinaryReader reader) { switch (reader.readByte()) { case 0: - return NetViewType.count; + return NetViewType.conn; case 1: return NetViewType.speed; case 2: - return NetViewType.size; + return NetViewType.traffic; default: - return NetViewType.count; + return NetViewType.conn; } } @override void write(BinaryWriter writer, NetViewType obj) { switch (obj) { - case NetViewType.count: + case NetViewType.conn: writer.writeByte(0); break; case NetViewType.speed: writer.writeByte(1); break; - case NetViewType.size: + case NetViewType.traffic: writer.writeByte(2); break; } diff --git a/lib/data/model/server/cpu.dart b/lib/data/model/server/cpu.dart index 7364f5c6..b064fea7 100644 --- a/lib/data/model/server/cpu.dart +++ b/lib/data/model/server/cpu.dart @@ -14,6 +14,15 @@ class Cpus { void update(List newStatus) { _pre = _now; _now = newStatus; + // 类似 [NetSpeed.update] 的处理 + // 虽然CPU热插拔情况较少... + if (_pre.length != _now.length) { + if (_pre.length > _now.length) { + _pre = _pre.sublist(0, _now.length); + } else { + _pre.addAll(_now.sublist(_pre.length, _now.length)); + } + } } int get coresCount => _now.length; diff --git a/lib/data/model/server/net_speed.dart b/lib/data/model/server/net_speed.dart index ce3d7dd9..76b9f8ae 100644 --- a/lib/data/model/server/net_speed.dart +++ b/lib/data/model/server/net_speed.dart @@ -24,6 +24,18 @@ class NetSpeed { void update(List newOne) { _old = _now; _now = newOne; + // 当长度不同,说明有网络接口改变 + // + // 应当跟随改变: + // 旧长度 > 新长度:将旧的数据截断 + // 旧长度 < 新长度:将旧的数据补齐 + if (_old.length != _now.length) { + if (_old.length > _now.length) { + _old = _old.sublist(0, _now.length); + } else { + _old.addAll(_now.sublist(_old.length, _now.length)); + } + } } BigInt get timeDiff => _now[0].time - _old[0].time; diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index c5977d0a..97e0229f 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -23,6 +23,7 @@ "clear": "Entfernen", "close": "Schließen", "cmd": "Command", + "conn": "Verbindung", "containerName": "Container Name", "containerStatus": "Container Status", "convert": "Konvertieren", @@ -166,6 +167,7 @@ "sftpSSHConnected": "SFTP Verbunden", "showDistLogo": "Distributionslogo anzeigen", "snippet": "Snippet", + "speed": "Tempo", "spentTime": "Benötigte Zeit: {time}", "sshTip": "Diese Funktion befindet sich jetzt in der Experimentierphase.\n\nBitte melde Bugs auf {url} oder mach mit bei der Entwicklung.", "sshVirtualKeyAutoOff": "Automatische Umschaltung der virtuellen Tasten", @@ -182,6 +184,7 @@ "theme": "Themen", "themeMode": "Themen-Modus", "times": "x", + "traffic": "Durchflussmenge", "ttl": "ttl", "unknown": "Unbekannt", "unknownError": "Unbekannter Fehler", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 94b50880..fb5b71a8 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -23,6 +23,7 @@ "clear": "Clear", "close": "Close", "cmd": "Command", + "conn": "Connection", "containerName": "Container name", "containerStatus": "Container status", "convert": "Convert", @@ -166,6 +167,7 @@ "sftpSSHConnected": "SFTP Connected", "showDistLogo": "Show distribution logo", "snippet": "Snippet", + "speed": "Speed", "spentTime": "Spent time: {time}", "sshTip": "This function is now in the experimental stage.\n\nPlease report bugs on {url} or join our development.", "sshVirtualKeyAutoOff": "Auto switching of virtual keys", @@ -182,6 +184,7 @@ "theme": "Theme", "themeMode": "Theme mode", "times": "Times", + "traffic": "Traffic", "ttl": "ttl", "unknown": "Unknown", "unknownError": "Unknown error", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 6b39bf69..74726e04 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -23,6 +23,7 @@ "clear": "清除", "close": "关闭", "cmd": "命令", + "conn": "连接", "containerName": "容器名", "containerStatus": "容器状态", "convert": "转换", @@ -166,6 +167,7 @@ "sftpSSHConnected": "SFTP 已连接,即将开始下载...", "showDistLogo": "显示发行版 Logo", "snippet": "代码片段", + "speed": "速度", "spentTime": "耗时: {time}", "sshTip": "该功能目前处于测试阶段。\n\n请在 {url} 反馈问题,或者加入我们开发。", "sshVirtualKeyAutoOff": "虚拟按键自动切换", @@ -182,6 +184,7 @@ "theme": "主题", "themeMode": "主题模式", "times": "次", + "traffic": "流量", "ttl": "缓存时间", "unknown": "未知", "unknownError": "未知错误", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 15a0fefe..a9799ad2 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -23,6 +23,7 @@ "clear": "清除", "close": "關閉", "cmd": "命令", + "conn": "連接", "containerName": "容器名稱", "containerStatus": "容器狀態", "convert": "轉換", @@ -166,6 +167,7 @@ "sftpSSHConnected": "SFTP 已連接,即將開始下載...", "showDistLogo": "顯示發行版 Logo", "snippet": "程式片段", + "speed": "速度", "spentTime": "耗時: {time}", "sshTip": "該功能目前處於測試階段。\n\n請在 {url} 反饋問題,或者加入我們開發。", "sshVirtualKeyAutoOff": "虛擬按鍵自動切換", @@ -182,6 +184,7 @@ "theme": "主題", "themeMode": "主題模式", "times": "次", + "traffic": "流量", "ttl": "緩存時間", "unknown": "未知", "unknownError": "未知錯誤", diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index d47b11f7..fdd0e383 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -33,6 +33,19 @@ class _ServerDetailPageState extends State final Order _cardsOrder = []; final _setting = locator(); + late final _cardBuildMap = Map.fromIterables( + defaultDetailCardOrder, + [ + _buildUpTimeAndSys, + _buildCPUView, + _buildMemView, + _buildSwapView, + _buildDiskView, + _buildNetView, + _buildTemperature, + ], + ); + @override void didChangeDependencies() { super.didChangeDependencies(); @@ -48,18 +61,6 @@ class _ServerDetailPageState extends State @override Widget build(BuildContext context) { - final map = Map.fromIterables( - defaultDetailCardOrder, - [ - _buildUpTimeAndSys, - _buildCPUView, - _buildMemView, - _buildSwapView, - _buildDiskView, - _buildNetView, - _buildTemperature, - ], - ); return Consumer(builder: (_, provider, __) { final s = provider.servers[widget.id]; if (s == null) { @@ -69,14 +70,11 @@ class _ServerDetailPageState extends State ), ); } - return _buildMainPage(s, map); + return _buildMainPage(s); }); } - Widget _buildMainPage( - Server si, - Map map, - ) { + Widget _buildMainPage(Server si) { return Scaffold( appBar: AppBar( title: Text(si.spi.name, style: textSize18), @@ -99,7 +97,9 @@ class _ServerDetailPageState extends State itemBuilder: (context, index) => ReorderableDelayedDragStartListener( key: ValueKey(index), index: index, - child: map[_cardsOrder[index]]?.call(si.status) ?? nil, + child: SizedBox( + child: _cardBuildMap[_cardsOrder[index]]?.call(si.status), + ), ), ), ); diff --git a/lib/view/page/setting.dart b/lib/view/page/setting.dart index 4506ec11..be7f1bf6 100644 --- a/lib/view/page/setting.dart +++ b/lib/view/page/setting.dart @@ -902,7 +902,7 @@ class _SettingPageState extends State { final items = NetViewType.values .map((e) => PopupMenuItem( value: e, - child: Text(e.name), + child: Text(e.l10n(_s)), )) .toList(); return ListTile( @@ -918,7 +918,7 @@ class _SettingPageState extends State { _setting.netViewType.put(idx); }, child: Text( - _netViewType.value.name, + _netViewType.value.l10n(_s), style: textSize15, ), ),