【发布时间】:2018-11-01 10:05:02
【问题描述】:
我是 Flutter 的新手,我想知道如何从 Flutter 中的缓存图像网络获取路径,或者如何将网络图像保存到资产图像并获取该图像的路径?
【问题讨论】:
-
欢迎来到 Stack Overflow!请edit 在此处添加有意义的代码和问题描述。你都尝试了些什么?发布证明您的问题的Minimal, Complete, Verifiable Example 将帮助您获得更好的答案。谢谢!
我是 Flutter 的新手,我想知道如何从 Flutter 中的缓存图像网络获取路径,或者如何将网络图像保存到资产图像并获取该图像的路径?
【问题讨论】:
较新的方法是使用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);
DefaultCacheManager()给出了一个单例实例。
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;
}
【讨论】:
_shareImage 中,他们将图片从assets 保存到app 目录中,获取File 对其的引用,然后使用文件名调用平台代码。除了从_findPath 检索文件名之外,您应该也可以这样做。
所有缓存都存储在该应用程序的一个特定位置。任何人都会触发他们的缓存以供进一步使用。使用flutter_cache_manager查找数据。
Future<String> _cachePath(String cacheUrl) async {
final cache = await CacheManager.getInstance();
var file = await cache.getFile(imageUrl);
return file.path;
}
【讨论】: