From d38bad78028a309e2f7503c3c82279030145193d Mon Sep 17 00:00:00 2001 From: LollipopKit <2036293523@qq.com> Date: Tue, 2 Nov 2021 19:21:04 +0800 Subject: [PATCH] Update memList to Memory --- lib/data/model/server/memory.dart | 9 +++++++++ lib/data/model/server/server_status.dart | 5 +++-- lib/data/provider/server.dart | 24 +++++++++++++++++------- lib/view/page/home.dart | 8 ++++++++ lib/view/page/server/detail.dart | 8 ++++---- lib/view/page/server/tab.dart | 2 +- lib/view/page/snippet/edit.dart | 8 ++++---- lib/view/page/snippet/list.dart | 8 ++++---- 8 files changed, 50 insertions(+), 22 deletions(-) create mode 100644 lib/data/model/server/memory.dart diff --git a/lib/data/model/server/memory.dart b/lib/data/model/server/memory.dart new file mode 100644 index 00000000..0a11bed7 --- /dev/null +++ b/lib/data/model/server/memory.dart @@ -0,0 +1,9 @@ +class Memory { + int total; + int used; + int free; + int shared; + int cache; + int avail; + Memory({required this.total, required this.used, required this.free, required this.shared, required this.cache, required this.avail}); +} diff --git a/lib/data/model/server/server_status.dart b/lib/data/model/server/server_status.dart index b3c3427e..dbb05e6f 100644 --- a/lib/data/model/server/server_status.dart +++ b/lib/data/model/server/server_status.dart @@ -1,5 +1,6 @@ import 'package:toolbox/data/model/server/cpu_2_status.dart'; import 'package:toolbox/data/model/server/disk_info.dart'; +import 'package:toolbox/data/model/server/memory.dart'; import 'package:toolbox/data/model/server/net_speed.dart'; import 'package:toolbox/data/model/server/tcp_status.dart'; @@ -30,13 +31,13 @@ class ServerStatus { */ Cpu2Status cpu2Status; - List memList; + Memory memory; String sysVer; String uptime; List disk; TcpStatus tcp; NetSpeed netSpeed; - ServerStatus(this.cpu2Status, this.memList, this.sysVer, this.uptime, + ServerStatus(this.cpu2Status, this.memory, this.sysVer, this.uptime, this.disk, this.tcp, this.netSpeed); } diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index 7666d418..d290b003 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -6,6 +6,7 @@ import 'package:toolbox/core/extension/stringx.dart'; import 'package:toolbox/core/provider_base.dart'; import 'package:toolbox/data/model/server/cpu_2_status.dart'; import 'package:toolbox/data/model/server/cpu_status.dart'; +import 'package:toolbox/data/model/server/memory.dart'; import 'package:toolbox/data/model/server/net_speed.dart'; import 'package:toolbox/data/model/server/server_connection_state.dart'; import 'package:toolbox/data/model/server/disk_info.dart'; @@ -23,6 +24,9 @@ class ServerProvider extends BusyProvider { final logger = Logger('ServerProvider'); + Memory get emptyMemory => + Memory(total: 1, used: 0, free: 1, shared: 0, cache: 0, avail: 1); + NetSpeedPart get emptyNetSpeedPart => NetSpeedPart('', 0, 0, 0); NetSpeed get emptyNetSpeed => @@ -35,7 +39,7 @@ class ServerProvider extends BusyProvider { ServerStatus get emptyStatus => ServerStatus( emptyCpu2Status, - [100, 0], + emptyMemory, 'Loading...', '', [DiskInfo('/', '/', 0, '0', '0', '0')], @@ -269,15 +273,21 @@ class ServerProvider extends BusyProvider { return list; } - List _getMem(String mem) { + Memory _getMem(String mem) { for (var item in mem.split('\n')) { if (item.contains('Mem:')) { - return RegExp(r'[1-9][0-9]*') - .allMatches(item) - .map((e) => int.parse(item.substring(e.start, e.end))) - .toList(); + final split = item.replaceFirst('Mem:', '').split(' '); + split.removeWhere((e) => e == ''); + final memList = split.map((e) => int.parse(e)).toList(); + return Memory( + total: memList[0], + used: memList[1], + free: memList[2], + shared: memList[3], + cache: memList[4], + avail: memList[5]); } } - return []; + return emptyMemory; } } diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index 67e2b7fa..b7f895f7 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -16,6 +16,7 @@ import 'package:toolbox/view/page/debug.dart'; import 'package:toolbox/view/page/private_key/stored.dart'; import 'package:toolbox/view/page/server/tab.dart'; import 'package:toolbox/view/page/setting.dart'; +import 'package:toolbox/view/page/snippet/list.dart'; import 'package:toolbox/view/widget/url_text.dart'; class MyHomePage extends StatefulWidget { @@ -87,6 +88,13 @@ class _MyHomePageState extends State AppRoute(const StoredPrivateKeysPage(), 'private key list') .go(context), ), + ListTile( + leading: const Icon(Icons.snippet_folder), + title: const Text('Snippet'), + onTap: () => + AppRoute(const SnippetListPage(), 'snippet list') + .go(context), + ), AboutListTile( icon: const Icon(Icons.text_snippet), child: const Text('Licences'), diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index 715a522d..13c7f635 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -182,7 +182,7 @@ class _ServerDetailPageState extends State Widget _buildMemView(ServerStatus ss) { final pColor = primaryColor; - final used = ss.memList[1] / ss.memList[0]; + final used = ss.memory.used / ss.memory.total; final width = _media.size.width - 17 * 2 - 17 * 2; return RoundRectCard(SizedBox( height: 47, @@ -212,10 +212,10 @@ class _ServerDetailPageState extends State SizedBox( width: width * (1 - used), child: LinearProgressIndicator( - // length == 2: failed to get mem list, now mem list = [100,0] which is initial value. - value: ss.memList.length == 2 + // memory.total == 1: failed to get mem, now mem = [emptyMemory] which is initial value. + value: ss.memory.total == 1 ? 0 - : ss.memList[4] / ss.memList[0], + : ss.memory.cache / ss.memory.total, backgroundColor: progressColor.resolve(context), color: pColor.withAlpha(77), ), diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 549226c3..aa773ca8 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -138,7 +138,7 @@ class _ServerPageState extends State mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ _buildPercentCircle(ss.cpu2Status.usedPercent(), 'CPU'), - _buildPercentCircle(ss.memList[1] / ss.memList[0] * 100, 'Mem'), + _buildPercentCircle(ss.memory.used / ss.memory.total * 100, 'Mem'), _buildIOData('Net', 'Conn:\n' + ss.tcp.maxConn.toString(), 'Fail:\n' + ss.tcp.fail.toString()), _buildIOData('Disk', 'Total:\n' + rootDisk.size, diff --git a/lib/view/page/snippet/edit.dart b/lib/view/page/snippet/edit.dart index 099d8684..ff86d812 100644 --- a/lib/view/page/snippet/edit.dart +++ b/lib/view/page/snippet/edit.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; -class SnappetEditPage extends StatefulWidget { - const SnappetEditPage({Key? key}) : super(key: key); +class SnippetEditPage extends StatefulWidget { + const SnippetEditPage({Key? key}) : super(key: key); @override - _SnappetEditPageState createState() => _SnappetEditPageState(); + _SnippetEditPageState createState() => _SnippetEditPageState(); } -class _SnappetEditPageState extends State { +class _SnippetEditPageState extends State { @override Widget build(BuildContext context) { return Container(); diff --git a/lib/view/page/snippet/list.dart b/lib/view/page/snippet/list.dart index f0f47299..eced379f 100644 --- a/lib/view/page/snippet/list.dart +++ b/lib/view/page/snippet/list.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; -class SnappetListPage extends StatefulWidget { - const SnappetListPage({Key? key}) : super(key: key); +class SnippetListPage extends StatefulWidget { + const SnippetListPage({Key? key}) : super(key: key); @override - _SnappetListPageState createState() => _SnappetListPageState(); + _SnippetListPageState createState() => _SnippetListPageState(); } -class _SnappetListPageState extends State { +class _SnippetListPageState extends State { @override Widget build(BuildContext context) { return Container();