【问题标题】:Flutter Making an Image.file() image into an ImageProvider() for zoomable photosFlutter 将 Image.file() 图像转换为 ImageProvider() 以获取可缩放照片
【发布时间】:2020-04-26 14:08:09
【问题描述】:

我创建了一个应用程序,可以下载大量信息以供离线使用,其中大部分是照片。在应用程序中,我想使用一个小部件来实现平移/缩放效果,但我发现的小部件似乎与 Image.file() 并不能很好地配合使用,而是使用 ImageProviders。

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

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

【问题讨论】:

    标签: image flutter zooming offline-browsing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用FileImage() 代替Image.file(),这是ImageProvider 的类型。

      来自文档:

      将给定的File 对象解码为图像,并将其与 给定规模。

      另见:

      Image.file 是由FileImage 支持的Image 小部件的简写。

      我认为您也可以将ExactAssetImage 与图像文件路径一起使用(例如:image.path),但它应该在AssetBundle 中。这是文档所说的:

      ExactAssetImage

      AssetBundle 获取图像,将其与给定的关联 规模。

      此实现需要明确的最终资产名称和规模 构造,并忽略设备像素比和大小 配置传递给解析。对于分辨率感知变体, 使用配置根据 设备像素比例和大小,见AssetImage

      read more.

      【讨论】:

      • 我不认为 ExactAssetImage 在这种情况下会起作用,因为它似乎只适用于与应用程序捆绑在一起的图像,而不适用于已下载的文件。然而, FileImage() 就像一个魅力。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      相关资源
      最近更新 更多