2021-06-28 12:54:27 +00:00
|
|
|
import 'dart:math';
|
|
|
|
|
2022-09-20 12:48:15 +00:00
|
|
|
final storageUnits = ["bytes", "KB", "MB", "GB"];
|
2021-03-02 06:35:10 +00:00
|
|
|
|
|
|
|
String convertBytesToReadableFormat(int bytes) {
|
|
|
|
int storageUnitIndex = 0;
|
2022-09-20 12:48:15 +00:00
|
|
|
while (bytes >= 1024 && storageUnitIndex < storageUnits.length - 1) {
|
2021-03-02 06:35:10 +00:00
|
|
|
storageUnitIndex++;
|
|
|
|
bytes = (bytes / 1024).round();
|
|
|
|
}
|
2022-09-20 12:48:15 +00:00
|
|
|
return bytes.toString() + " " + storageUnits[storageUnitIndex];
|
2021-03-02 06:35:10 +00:00
|
|
|
}
|
2021-06-28 12:54:27 +00:00
|
|
|
|
|
|
|
String formatBytes(int bytes, [int decimals = 2]) {
|
2021-07-27 14:19:58 +00:00
|
|
|
if (bytes == 0) return '0 bytes';
|
|
|
|
const k = 1024;
|
2022-08-29 14:43:31 +00:00
|
|
|
final int dm = decimals < 0 ? 0 : decimals;
|
|
|
|
final int i = (log(bytes) / log(k)).floor();
|
2022-09-20 12:48:15 +00:00
|
|
|
return ((bytes / pow(k, i)).toStringAsFixed(dm)) + ' ' + storageUnits[i];
|
2021-07-27 14:19:58 +00:00
|
|
|
}
|
2022-10-18 12:55:09 +00:00
|
|
|
|
2022-10-26 11:06:42 +00:00
|
|
|
//shows 1st decimal only if less than 10GB & omits decimal if decimal is 0
|
2022-10-26 12:15:48 +00:00
|
|
|
num roundBytesUsedToGBs(int usedBytes, int freeSpace) {
|
2022-10-18 12:55:09 +00:00
|
|
|
const tenGBinBytes = 10737418240;
|
2022-10-26 12:15:48 +00:00
|
|
|
num bytesInGB = convertBytesToGBs(usedBytes);
|
|
|
|
if ((usedBytes >= tenGBinBytes && freeSpace >= tenGBinBytes) ||
|
|
|
|
bytesInGB % 1 == 0) {
|
2022-10-26 11:06:42 +00:00
|
|
|
bytesInGB = bytesInGB.truncate();
|
2022-10-18 12:55:09 +00:00
|
|
|
}
|
|
|
|
return bytesInGB;
|
|
|
|
}
|
2022-10-19 04:25:34 +00:00
|
|
|
|
2022-10-26 12:21:16 +00:00
|
|
|
//Eg: 0.3 GB, 11.0 GB, 532.3 GB
|
2022-10-26 11:35:34 +00:00
|
|
|
num convertBytesToGBs(int bytes) {
|
|
|
|
return num.parse((bytes / (pow(1024, 3))).toStringAsFixed(1));
|
|
|
|
}
|
|
|
|
|
2022-10-19 04:49:06 +00:00
|
|
|
int convertBytesToMBs(int bytes) {
|
2022-10-19 04:25:34 +00:00
|
|
|
return (bytes / pow(1024, 2)).round();
|
|
|
|
}
|
2022-11-07 13:29:45 +00:00
|
|
|
|
2022-11-08 08:45:17 +00:00
|
|
|
//Eg: 1TB, 1.3TB, 2.9TB, 3TB
|
2022-11-07 13:29:45 +00:00
|
|
|
roundGBsToTBs(sizeInGBs) {
|
|
|
|
final num sizeInTBs = num.parse((sizeInGBs / 1000).toStringAsFixed(1));
|
|
|
|
if (sizeInTBs % 1 == 0) {
|
|
|
|
return sizeInTBs.truncate();
|
|
|
|
} else {
|
|
|
|
return sizeInTBs;
|
|
|
|
}
|
|
|
|
}
|