You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何通过文件路径获取并显示文件大小

解决方法

你当前代码里的files[index].path.length()获取的是文件路径字符串的字符长度,并不是文件的实际大小。要显示文件真实大小,可以按以下步骤实现:

  • 通过File类异步获取文件的字节数,用FutureBuilder处理异步状态
  • 将原始字节数转换成易读的格式(如KB/MB)

示例代码

title: Text(files[index].path.split('/').last),
trailing: FutureBuilder<int>(
  future: File(files[index].path).length(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      // 把字节数转成可读格式
      String fileSize = formatFileSize(snapshot.data!);
      return Text(fileSize);
    } else if (snapshot.hasError) {
      return const Text('未知');
    }
    // 加载状态显示小加载圈
    return const SizedBox(
      width: 20,
      height: 20,
      child: CircularProgressIndicator(strokeWidth: 2),
    );
  },
),

配套的文件大小格式化工具函数

String formatFileSize(int bytes) {
  if (bytes < 1024) {
    return '$bytes B';
  } else if (bytes < 1024 * 1024) {
    return '${(bytes / 1024).toStringAsFixed(1)} KB';
  } else {
    return '${(bytes / (1024 * 1024)).toStringAsFixed(1)} MB';
  }
}

注意事项

  • 确保已申请存储读取权限,否则会获取文件大小失败
  • 如果列表文件数量较多,建议提前批量获取所有文件大小并缓存,避免列表滚动时重复发起异步请求影响性能

内容的提问来源于stack exchange,提问作者Faizan Abbas Bangash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:25:15