Flutter 将 Image.file() 图像制作成可缩放照片的 ImageProvider()

Flutter Making an Image.file() image into an ImageProvider() for zoomable photos

我创建了一个应用程序,可以下载大量信息供离线使用,其中大部分是照片。在应用程序中,我想使用一个小部件,让我有一个 pan/zoom 效果,但我发现的那些似乎不能很好地与 Image.file() 一起玩,而是使用ImageProviders.

例如,Photo_View只接受继承自ImageProvider的AssetImage和NetworkImage图像,而Image.file()继承自Diagnosticable。我见过的所有软件包都以基本相同的方式运行。

所以,我的问题是如何将 Image.file() 数据转换为 ImageProvider 格式。

而不是 Image.file() 使用 FileImage() 类型 ImageProvider.

来自医生:

Decodes the given File object as an image, associating it with the given scale.

See also:

Image.file for a shorthand of an Image widget backed by FileImage.

我认为您也可以将 ExactAssetImage 与图像文件路径一起使用(例如:image.path),但它应该在 AssetBundle 中。医生对此有何评论:

ExactAssetImage class

Fetches an image from an AssetBundle, associating it with the given scale.

This implementation requires an explicit final assetName and scale on construction, and ignores the device pixel ratio and size in the configuration passed into resolve. For a resolution-aware variant that uses the configuration to pick an appropriate image based on the device pixel ratio and size, see AssetImage.

read more.

第一次导入dart:io; 然后使用

PhotoView(imageProvider: FileImage(File(path)))

这对我有用:

导入 'dart:io' 作为 io;

FileImage(io.File(_imageFile!.path)) 作为 ImageProvider

其中 _imageFile 是一个 XFile