在 Dart 中格式化文件大小

leb*_*755 4 format filesize dart flutter

如何在 Dart 中格式化文件大小?

输入:1000000

预期输出:1 MB

为了便于使用,输入可以是 anint或 a double,结果应该是String只有一位小数的 a。

leb*_*755 8

我为此做了一个扩展方法:

extension FileFormatter on num {
  String readableFileSize({bool base1024 = true}) {
    final base = base1024 ? 1024 : 1000;
    if (this <= 0) return "0";
    final units = ["B", "kB", "MB", "GB", "TB"];
    int digitGroups = (log(this) / log(base)).round();
    return NumberFormat("#,##0.#").format(this / pow(base, digitGroups)) +
        " " +
        units[digitGroups];
  }
}
Run Code Online (Sandbox Code Playgroud)

您将需要使用NumberFormat 类的intl包。

您可以使用布尔值显示位或字节base64

用法:

int myInt = 12345678;
double myDouble = 2546;
print('myInt: ${myInt.readableFileSize(base1024: false)}');
print('myDouble: ${myDouble.readableFileSize()}');
Run Code Online (Sandbox Code Playgroud)

输出:

myInt: 12.3 MB
myDouble: 2.5 kB
Run Code Online (Sandbox Code Playgroud)

受到这个SO答案的启发。