我为此做了一个扩展方法:
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答案的启发。
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |