mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
73 lines
1.5 KiB
Dart
73 lines
1.5 KiB
Dart
import '../../res/misc.dart';
|
|
|
|
class Disk {
|
|
final String path;
|
|
final String loc;
|
|
final int usedPercent;
|
|
final String used;
|
|
final String size;
|
|
final String avail;
|
|
|
|
Disk({
|
|
required this.path,
|
|
required this.loc,
|
|
required this.usedPercent,
|
|
required this.used,
|
|
required this.size,
|
|
required this.avail,
|
|
});
|
|
}
|
|
|
|
List<Disk> parseDisk(String raw) {
|
|
final list = <Disk>[];
|
|
final items = raw.split('\n');
|
|
items.removeAt(0);
|
|
var pathCache = '';
|
|
for (var item in items) {
|
|
if (item.isEmpty) {
|
|
continue;
|
|
}
|
|
final vals = item.split(numReg);
|
|
if (vals.length == 1) {
|
|
pathCache = vals[0];
|
|
continue;
|
|
}
|
|
if (pathCache != '') {
|
|
vals[0] = pathCache;
|
|
pathCache = '';
|
|
}
|
|
list.add(Disk(
|
|
path: vals[0],
|
|
loc: vals[5],
|
|
usedPercent: int.parse(vals[4].replaceFirst('%', '')),
|
|
used: vals[2],
|
|
size: vals[1],
|
|
avail: vals[3],
|
|
));
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/// Issue 88
|
|
///
|
|
/// Due to performance issues,
|
|
/// if there is no `Disk.loc == '/' || Disk.loc == '/sysroot'`,
|
|
/// return the first [Disk] of [disks].
|
|
///
|
|
/// If we find out the biggest [Disk] of [disks],
|
|
/// the fps may lower than 60.
|
|
Disk? findRootDisk(List<Disk> disks) {
|
|
if (disks.isEmpty) return null;
|
|
final roots = disks.where((element) => element.loc == '/');
|
|
if (roots.isEmpty) {
|
|
final sysRoots = disks.where((element) => element.loc == '/sysroot');
|
|
if (sysRoots.isEmpty) {
|
|
return disks.first;
|
|
} else {
|
|
return sysRoots.first;
|
|
}
|
|
} else {
|
|
return roots.first;
|
|
}
|
|
}
|