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
相关产品推荐
相关产品推荐

