【问题标题】:How to get path from cached images network in flutter?如何从颤动的缓存图像网络中获取路径?
【发布时间】:2018-11-01 10:05:02
【问题描述】:

我是 Flutter 的新手,我想知道如何从 Flutter 中的缓存图像网络获取路径,或者如何将网络图像保存到资产图像并获取该图像的路径?

【问题讨论】:

  • 欢迎来到 Stack Overflow!请edit 在此处添加有意义的代码和问题描述。你都尝试了些什么?发布证明您的问题的Minimal, Complete, Verifiable Example 将帮助您获得更好的答案。谢谢!

标签: dart flutter


【解决方案1】:

较新的方法是使用Flutter Cache Manager 包中的DefaultCacheManager

final cache = DefaultCacheManager(); // Gives a Singleton instance
final file = await cache.getSingleFile(yourURL);
// Now use file.path

【讨论】:

  • DefaultCacheManager() 不返回 Future。所以它应该是final cache = DefaultCacheManager();。否则你会得到'await' applied to 'DefaultCacheManager', which is not a 'Future'.
  • 必须是var file = await DefaultCacheManager().getSingleFile(url);
  • @Burnash:没错。感谢您指出。从here,我们也可以确认DefaultCacheManager()给出了一个单例实例。
【解决方案2】:

cached_network_image 在后台使用flutter_cache_manager 将图像保存在本地(代码here)。

通过缓存管理器找到访问文件所需的路径。

import 'package:flutter_cache_manager/flutter_cache_manager.dart';

Future<String> _findPath(String imageUrl) async {
  final cache = await CacheManager.getInstance();
  final file = await cache.getFile(imageUrl);
  return file.path;
}

【讨论】:

  • 感谢您的回答,但我仍然有一些问题如何使网络图像成为资产?
  • 您能分享一下为什么您需要在资产中使用它吗?我的理解是,资产在编译时与应用程序打包在一起,正如 here 所暗示的那样。但是,here 他们确实提到它“可以从文件系统加载”,但没有说如何。我认为他们的意思是您可以实现自己的AssetBundle 并将其设置为DefaultAssetBundle
  • 我需要它来使用来自 api 的网络图像制作壁纸应用程序,并使用这个类似的代码 here 并在该代码中使用资产图像在颤振和本机 java 之间通过平台通道共享图像,所以我认为我应该使用资产图像来发送我的网络图像,但我不知道如何使用 DefaultAssetBundle(使用网络图像)代码设置资产包?谢谢您的回答
  • 在该示例中,资产是图像的原始来源,但这对于其余操作并不重要。在_shareImage 中,他们将图片从assets 保存到app 目录中,获取File 对其的引用,然后使用文件名调用平台代码。除了从_findPath 检索文件名之外,您应该也可以这样做。
  • 那么如何将网络图像变成文件图像呢?这样我就可以得到一个文件然后调用它,谢谢
【解决方案3】:

所有缓存都存储在该应用程序的一个特定位置。任何人都会触发他们的缓存以供进一步使用。使用flutter_cache_manager查找数据。

Future<String> _cachePath(String cacheUrl) async {
  final cache = await CacheManager.getInstance();
  var file = await cache.getFile(imageUrl);
  return file.path;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多