mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
Update memList to Memory
This commit is contained in:
9
lib/data/model/server/memory.dart
Normal file
9
lib/data/model/server/memory.dart
Normal 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});
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user