getThumbnailFromPath method

  1. @override
Future<Uint8List?> getThumbnailFromPath(
  1. PathWrapper<AssetPathEntity> path
)
override

Get the thumbnail from the first asset under the specific path entity. 获取指定路径下的第一个资源的缩略图数据

Implementation

@override
Future<Uint8List?> getThumbnailFromPath(
  PathWrapper<AssetPathEntity> path,
) async {
  try {
    if (requestType == RequestType.audio) {
      return null;
    }
    final int assetCount = path.assetCount ?? await path.path.assetCountAsync;
    if (assetCount == 0) {
      return null;
    }
    final List<AssetEntity> assets = await path.path.getAssetListRange(
      start: 0,
      end: 1,
    );
    if (assets.isEmpty) {
      return null;
    }
    final AssetEntity asset = assets.single;
    // Obtain the thumbnail only when the asset is image or video.
    if (asset.type != AssetType.image && asset.type != AssetType.video) {
      return null;
    }
    final Uint8List? data = await asset.thumbnailDataWithSize(
      pathThumbnailSize,
    );
    final int index = _paths.indexWhere(
      (PathWrapper<AssetPathEntity> p) => p.path == path.path,
    );
    if (index != -1) {
      _paths[index] = _paths[index].copyWith(
        assetCount: assetCount,
        thumbnailData: data,
      );
      notifyListeners();
    }
    return data;
  } catch (e, s) {
    FlutterError.presentError(
      FlutterErrorDetails(
        exception: e,
        stack: s,
        library: packageName,
        silent: true,
      ),
    );
    return null;
  }
}