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/cpu_2_status.dart';
|
||||||
import 'package:toolbox/data/model/server/disk_info.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/net_speed.dart';
|
||||||
import 'package:toolbox/data/model/server/tcp_status.dart';
|
import 'package:toolbox/data/model/server/tcp_status.dart';
|
||||||
|
|
||||||
@@ -30,13 +31,13 @@ class ServerStatus {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
Cpu2Status cpu2Status;
|
Cpu2Status cpu2Status;
|
||||||
List<int> memList;
|
Memory memory;
|
||||||
String sysVer;
|
String sysVer;
|
||||||
String uptime;
|
String uptime;
|
||||||
List<DiskInfo> disk;
|
List<DiskInfo> disk;
|
||||||
TcpStatus tcp;
|
TcpStatus tcp;
|
||||||
NetSpeed netSpeed;
|
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);
|
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/core/provider_base.dart';
|
||||||
import 'package:toolbox/data/model/server/cpu_2_status.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/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/net_speed.dart';
|
||||||
import 'package:toolbox/data/model/server/server_connection_state.dart';
|
import 'package:toolbox/data/model/server/server_connection_state.dart';
|
||||||
import 'package:toolbox/data/model/server/disk_info.dart';
|
import 'package:toolbox/data/model/server/disk_info.dart';
|
||||||
@@ -23,6 +24,9 @@ class ServerProvider extends BusyProvider {
|
|||||||
|
|
||||||
final logger = Logger('ServerProvider');
|
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);
|
NetSpeedPart get emptyNetSpeedPart => NetSpeedPart('', 0, 0, 0);
|
||||||
|
|
||||||
NetSpeed get emptyNetSpeed =>
|
NetSpeed get emptyNetSpeed =>
|
||||||
@@ -35,7 +39,7 @@ class ServerProvider extends BusyProvider {
|
|||||||
|
|
||||||
ServerStatus get emptyStatus => ServerStatus(
|
ServerStatus get emptyStatus => ServerStatus(
|
||||||
emptyCpu2Status,
|
emptyCpu2Status,
|
||||||
[100, 0],
|
emptyMemory,
|
||||||
'Loading...',
|
'Loading...',
|
||||||
'',
|
'',
|
||||||
[DiskInfo('/', '/', 0, '0', '0', '0')],
|
[DiskInfo('/', '/', 0, '0', '0', '0')],
|
||||||
@@ -269,15 +273,21 @@ class ServerProvider extends BusyProvider {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<int> _getMem(String mem) {
|
Memory _getMem(String mem) {
|
||||||
for (var item in mem.split('\n')) {
|
for (var item in mem.split('\n')) {
|
||||||
if (item.contains('Mem:')) {
|
if (item.contains('Mem:')) {
|
||||||
return RegExp(r'[1-9][0-9]*')
|
final split = item.replaceFirst('Mem:', '').split(' ');
|
||||||
.allMatches(item)
|
split.removeWhere((e) => e == '');
|
||||||
.map((e) => int.parse(item.substring(e.start, e.end)))
|
final memList = split.map((e) => int.parse(e)).toList();
|
||||||
.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/private_key/stored.dart';
|
||||||
import 'package:toolbox/view/page/server/tab.dart';
|
import 'package:toolbox/view/page/server/tab.dart';
|
||||||
import 'package:toolbox/view/page/setting.dart';
|
import 'package:toolbox/view/page/setting.dart';
|
||||||
|
import 'package:toolbox/view/page/snippet/list.dart';
|
||||||
import 'package:toolbox/view/widget/url_text.dart';
|
import 'package:toolbox/view/widget/url_text.dart';
|
||||||
|
|
||||||
class MyHomePage extends StatefulWidget {
|
class MyHomePage extends StatefulWidget {
|
||||||
@@ -87,6 +88,13 @@ class _MyHomePageState extends State<MyHomePage>
|
|||||||
AppRoute(const StoredPrivateKeysPage(), 'private key list')
|
AppRoute(const StoredPrivateKeysPage(), 'private key list')
|
||||||
.go(context),
|
.go(context),
|
||||||
),
|
),
|
||||||
|
ListTile(
|
||||||
|
leading: const Icon(Icons.snippet_folder),
|
||||||
|
title: const Text('Snippet'),
|
||||||
|
onTap: () =>
|
||||||
|
AppRoute(const SnippetListPage(), 'snippet list')
|
||||||
|
.go(context),
|
||||||
|
),
|
||||||
AboutListTile(
|
AboutListTile(
|
||||||
icon: const Icon(Icons.text_snippet),
|
icon: const Icon(Icons.text_snippet),
|
||||||
child: const Text('Licences'),
|
child: const Text('Licences'),
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
|||||||
|
|
||||||
Widget _buildMemView(ServerStatus ss) {
|
Widget _buildMemView(ServerStatus ss) {
|
||||||
final pColor = primaryColor;
|
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;
|
final width = _media.size.width - 17 * 2 - 17 * 2;
|
||||||
return RoundRectCard(SizedBox(
|
return RoundRectCard(SizedBox(
|
||||||
height: 47,
|
height: 47,
|
||||||
@@ -212,10 +212,10 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: width * (1 - used),
|
width: width * (1 - used),
|
||||||
child: LinearProgressIndicator(
|
child: LinearProgressIndicator(
|
||||||
// length == 2: failed to get mem list, now mem list = [100,0] which is initial value.
|
// memory.total == 1: failed to get mem, now mem = [emptyMemory] which is initial value.
|
||||||
value: ss.memList.length == 2
|
value: ss.memory.total == 1
|
||||||
? 0
|
? 0
|
||||||
: ss.memList[4] / ss.memList[0],
|
: ss.memory.cache / ss.memory.total,
|
||||||
backgroundColor: progressColor.resolve(context),
|
backgroundColor: progressColor.resolve(context),
|
||||||
color: pColor.withAlpha(77),
|
color: pColor.withAlpha(77),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ class _ServerPageState extends State<ServerPage>
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
_buildPercentCircle(ss.cpu2Status.usedPercent(), 'CPU'),
|
_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(),
|
_buildIOData('Net', 'Conn:\n' + ss.tcp.maxConn.toString(),
|
||||||
'Fail:\n' + ss.tcp.fail.toString()),
|
'Fail:\n' + ss.tcp.fail.toString()),
|
||||||
_buildIOData('Disk', 'Total:\n' + rootDisk.size,
|
_buildIOData('Disk', 'Total:\n' + rootDisk.size,
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class SnappetEditPage extends StatefulWidget {
|
class SnippetEditPage extends StatefulWidget {
|
||||||
const SnappetEditPage({Key? key}) : super(key: key);
|
const SnippetEditPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_SnappetEditPageState createState() => _SnappetEditPageState();
|
_SnippetEditPageState createState() => _SnippetEditPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SnappetEditPageState extends State<SnappetEditPage> {
|
class _SnippetEditPageState extends State<SnippetEditPage> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container();
|
return Container();
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class SnappetListPage extends StatefulWidget {
|
class SnippetListPage extends StatefulWidget {
|
||||||
const SnappetListPage({Key? key}) : super(key: key);
|
const SnippetListPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_SnappetListPageState createState() => _SnappetListPageState();
|
_SnippetListPageState createState() => _SnippetListPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SnappetListPageState extends State<SnappetListPage> {
|
class _SnippetListPageState extends State<SnippetListPage> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container();
|
return Container();
|
||||||
|
|||||||
Reference in New Issue
Block a user