Update memList to Memory

This commit is contained in:
LollipopKit
2021-11-02 19:21:04 +08:00
parent 9e73dd07ca
commit d38bad7802
8 changed files with 50 additions and 22 deletions

View File

@@ -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});
}

View File

@@ -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<int> memList;
Memory memory;
String sysVer;
String uptime;
List<DiskInfo> 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);
}

View File

@@ -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<int> _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;
}
}

View File

@@ -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<MyHomePage>
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'),

View File

@@ -182,7 +182,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
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<ServerDetailPage>
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),
),

View File

@@ -138,7 +138,7 @@ class _ServerPageState extends State<ServerPage>
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,

View File

@@ -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<SnappetEditPage> {
class _SnippetEditPageState extends State<SnippetEditPage> {
@override
Widget build(BuildContext context) {
return Container();

View File

@@ -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<SnappetListPage> {
class _SnippetListPageState extends State<SnippetListPage> {
@override
Widget build(BuildContext context) {
return Container();