From 2dbb1a1857e181afdf51a33d39da46a54621aaef Mon Sep 17 00:00:00 2001 From: LollipopKit <2036293523@qq.com> Date: Thu, 28 Oct 2021 09:33:39 +0800 Subject: [PATCH] Convert to not nullable --- lib/data/model/cpu_2_status.dart | 7 ++++--- lib/data/model/server_status.dart | 16 ++++++++-------- lib/data/provider/server.dart | 24 ++++++++++++------------ lib/view/page/server/detail.dart | 9 +++++++-- lib/view/page/server/tab.dart | 12 ++++++------ 5 files changed, 37 insertions(+), 31 deletions(-) diff --git a/lib/data/model/cpu_2_status.dart b/lib/data/model/cpu_2_status.dart index 949b5553..66b3de37 100644 --- a/lib/data/model/cpu_2_status.dart +++ b/lib/data/model/cpu_2_status.dart @@ -6,9 +6,10 @@ class Cpu2Status { Cpu2Status(this.pre, this.now); double usedPercent({int coreIdx = 0}) { - final used = (now[coreIdx].idle - pre[coreIdx].idle) / - (now[coreIdx].total - pre[coreIdx].total); - return used.isNaN ? 0 : used; + final idleDelta = now[coreIdx].idle - pre[coreIdx].idle; + final totalDelta = now[coreIdx].total - pre[coreIdx].total; + final used = idleDelta / totalDelta; + return used.isNaN ? 0 : 100 - used * 100; } Cpu2Status update(List newStatus) { diff --git a/lib/data/model/server_status.dart b/lib/data/model/server_status.dart index 2b78ca9c..022e7b0e 100644 --- a/lib/data/model/server_status.dart +++ b/lib/data/model/server_status.dart @@ -28,18 +28,18 @@ class ServerStatus { } */ - Cpu2Status? cpu2Status; - List? memList; - String? sysVer; - String? uptime; - List? disk; - TcpStatus? tcp; + late Cpu2Status cpu2Status; + late List memList; + late String sysVer; + late String uptime; + late List disk; + late TcpStatus tcp; ServerStatus( - {this.cpu2Status, + this.cpu2Status, this.memList, this.sysVer, this.uptime, this.disk, - this.tcp}); + this.tcp); } diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index b0e7374f..47078d58 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -28,9 +28,11 @@ class ServerProvider extends BusyProvider { Cpu2Status([emptyCpuStatus], [emptyCpuStatus]); ServerStatus get emptyStatus => ServerStatus( - cpu2Status: emptyCpu2Status, - memList: [100, 0], - disk: [ + emptyCpu2Status, + [100, 0], + '', + '', + [ DiskInfo( mountLocation: '/', mountPath: '/', @@ -39,9 +41,7 @@ class ServerProvider extends BusyProvider { avail: '0', usedPercent: 0) ], - sysVer: '', - uptime: '', - tcp: TcpStatus(maxConn: 0, active: 0, passive: 0, fail: 0)); + TcpStatus(maxConn: 0, active: 0, passive: 0, fail: 0)); Future loadLocalData() async { setBusyState(true); @@ -145,12 +145,12 @@ class ServerProvider extends BusyProvider { final tcp = await client.execute('cat /proc/net/snmp') ?? ''; return ServerStatus( - cpu2Status: _getCPU(cpu, _servers[idx].status.cpu2Status!), - memList: _getMem(mem), - sysVer: sysVer.trim(), - disk: _getDisk(disk), - uptime: _getUpTime(upTime), - tcp: _getTcp(tcp)); + _getCPU(cpu, _servers[idx].status.cpu2Status), + _getMem(mem), + sysVer.trim(), + _getUpTime(upTime), + _getDisk(disk), + _getTcp(tcp)); } Cpu2Status _getCPU(String raw, Cpu2Status old) { diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index ca60163b..19d21547 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -34,10 +34,15 @@ class _ServerDetailPageState extends State { } Widget _buildCPUView(ServerStatus ss) { - return Text(ss.cpu2Status!.toString()); + return ListView.builder( + itemBuilder: (ctx, idx) { + return Text('$idx ${ss.cpu2Status.usedPercent(coreIdx: idx)}'); + }, + itemCount: ss.cpu2Status.now.length, + ); } Widget _buildMemView(ServerStatus ss) { - return Text(ss.memList!.length.toString()); + return Text(ss.memList.length.toString()); } } diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index aa6edec2..b667c7b7 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -110,7 +110,7 @@ class _ServerPageState extends State Widget _buildRealServerCard( ServerStatus ss, String serverName, ServerConnectionState cs) { final rootDisk = - ss.disk!.firstWhere((element) => element!.mountLocation == '/'); + ss.disk.firstWhere((element) => element!.mountLocation == '/'); return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -123,7 +123,7 @@ class _ServerPageState extends State style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 12), textScaleFactor: 1.0, ), - Text(getTopRightStr(cs, ss.uptime!), + Text(getTopRightStr(cs, ss.uptime), textScaleFactor: 1.0, style: TextStyle( color: _theme.textTheme.bodyText1!.color!.withAlpha(100), @@ -136,11 +136,11 @@ class _ServerPageState extends State Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - _buildPercentCircle(ss.cpu2Status!.usedPercent(), 'CPU'), + _buildPercentCircle(ss.cpu2Status.usedPercent(), 'CPU'), _buildPercentCircle( - ss.memList![1]! / ss.memList![0]! * 100 + 0.01, 'Mem'), - _buildIOData('Net', 'Conn:\n' + ss.tcp!.maxConn!.toString(), - 'Fail:\n' + ss.tcp!.fail.toString()), + ss.memList[1]! / ss.memList[0]! * 100 + 0.01, 'Mem'), + _buildIOData('Net', 'Conn:\n' + ss.tcp.maxConn!.toString(), + 'Fail:\n' + ss.tcp.fail.toString()), _buildIOData('Disk', 'Total:\n' + rootDisk!.size!, 'Used:\n' + rootDisk.usedPercent.toString() + '%') ],