繁体   English   中英

如何从网络下载图像并在 flutter 中离线用作资产图像

[英]How to download image from network and use as an asset image offline in flutter

我正在使用sqlflite flutter package 为我的应用程序管理一个小型数据库,有一个表,其中我有一些来自互联网的图像的 url,但我需要保存它们并使用文件而不是 url 稍后显示这些图像。 我的意思是我想做这样的事情:

bool internet
internet ? Image.network('the_url') : Image.assets("path to image in my assets folder")

那么,有什么方法可以从 url 中获取图像并将其保存以便以后可以访问它?

您可以使用NetworkAssetBundle下载图像并转换为 Unint8List

final ByteData imageData = await NetworkAssetBundle(Uri.parse("YOUR_URL")).load("");
final Uint8List bytes = imageData.buffer.asUint8List();

然后你可以通过Image.memory()小部件加载它

Image.memory(bytes);

您可以将该数据存储在 sqflite 中并在需要时检索

您可以使用 path_provider package 从互联网下载并保存在本地。 然后,如果可用,您可以从本地资产加载。 否则它也可以从互联网上下载。

 Future<String?> loadPath() async {
var dir = await getApplicationDocumentsDirectory();
String dirName = widget.url!.substring(87);
file = File("${dir.path}/$dirName");

if (file.existsSync() == true && _isDownloadingPDF == false) {
  // debugPrint('file.path returned');
  return file.path;
} else {
  return null;
}

}

您是否尝试过https://pub.dev/packages/cached_network_image

看起来这个包将满足您的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM