toStorageUnit method
b KB MB GB TB PB
Implementation
String toStorageUnit([int round = 2]) {
int divider = 1024;
if (this < divider) {
return '$this B';
}
if (this < divider * divider && this % divider == 0) {
return '${(this / divider).toStringAsFixed(0)} KB';
}
if (this < divider * divider) {
return '${(this / divider).toStringAsFixed(round)} KB';
}
if (this < divider * divider * divider && this % (divider * divider) == 0) {
return '${(this / (divider * divider)).toStringAsFixed(0)} MB';
}
if (this < divider * divider * divider) {
return '${(this / divider / divider).toStringAsFixed(round)} MB';
}
if (this < divider * divider * divider * divider &&
this % (divider * divider * divider) == 0) {
return '${(this / (divider * divider * divider)).toStringAsFixed(0)} GB';
}
if (this < divider * divider * divider * divider) {
return '${(this / divider / divider / divider).toStringAsFixed(round)} GB';
}
if (this < divider * divider * divider * divider * divider &&
this % (divider / divider / divider / divider) == 0) {
num r = this / divider / divider / divider / divider;
return '${r.toStringAsFixed(0)} TB';
}
if (this < divider * divider * divider * divider * divider) {
num r = this / divider / divider / divider / divider;
return '${r.toStringAsFixed(round)} TB';
}
if (this < divider * divider * divider * divider * divider * divider &&
this % (divider / divider / divider / divider / divider) == 0) {
num r = this / divider / divider / divider / divider / divider;
return '${r.toStringAsFixed(0)} PB';
} else {
num r = this / divider / divider / divider / divider / divider;
return '${r.toStringAsFixed(round)} PB';
}
}