flutter如何准确获取assetentity文件大小

在Flutter中使用photo_manager插件获取AssetEntity时,如何准确获取文件的实际大小?目前尝试通过file.sizeoriginFile获取到的数值与系统相册显示的尺寸不一致,特别是对HEIC格式的图片和压缩过的视频文件。有没有可靠的方法能精确计算出AssetEntity对应的文件字节大小?

2 回复

使用AssetEntity.size属性获取文件大小(字节)。示例:

int size = await asset.size;

注意:需异步调用,返回值为int类型。

更多关于flutter如何准确获取assetentity文件大小的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,要准确获取 AssetEntity 文件的大小,可以通过 file 属性获取文件对象,再使用 length() 方法获取字节数。以下是具体步骤和代码示例:

  1. 添加依赖:确保在 pubspec.yaml 中已添加 photo_managerpermission_handler 依赖。
  2. 获取文件并读取大小
    import 'package:photo_manager/photo_manager.dart';
    
    Future<int> getAssetSize(AssetEntity asset) async {
      // 获取文件对象
      File? file = await asset.file;
      if (file != null) {
        // 获取文件大小(字节)
        return await file.length();
      }
      return 0; // 文件不存在时返回0
    }
    

注意事项

  • 需要处理权限请求(如 Photos 权限)。
  • 文件可能为 null,需进行空值检查。
  • 返回的字节数可转换为 KB 或 MB(例如 sizeInKB = bytes / 1024)。

此方法适用于图片、视频等资源,简单高效。

回到顶部