Dart / Flutter-持久保存大量图像文件的正确方法

时间:2019-02-22 11:02:19

标签: sqlite dart flutter

我将要开始开发类似《百科全书》的应用程序,在该应用程序中,我希望对象Item包含主图像以及用于画廊目的的其他图像列表。

我已经对如何在Flutter中存储图像进行了一些研究,但我很困惑-包括以下已回答的问题:

  1. 资产-但是访问,过滤和搜索等并非易事
  2. SQLite(Base64编码/解码)-加载和解码/编码图像对象列表时的性能问题
  3. 保留磁盘上的文件-更长的加载时间

问题是-在这种情况下最好的方法是什么?

任何提示/技巧都非常感谢! :)

2 个答案:

答案 0 :(得分:0)

  1. 如果将它们与应用程序一起静态交付,则资产将运行良好。筛选,搜索等应该不会太难。

  2. 是的,所有内容都将存储在单个文件中,而这会产生一些开销。

  3. “将文件保留在磁盘上”会以各种方式将文件保留在磁盘上,并且加载时间是不可避免的。当用户导航到应显示图像的视图时,您也许可以在后台加载图像以将其存储在内存中。

如果它们是静态的,我会将它们存储为资产(在应用发布后不要更改,或者仅在应用程序更新时不要更改)

您可以使用SQLite并维护一个包含有关图像的元信息的表以及一个具有图像文件名(如果需要,还包括路径)的字段,以利用SQL数据库的查询功能和最佳性能。

有关更多详细信息,需要更多信息。

答案 1 :(得分:0)

尝试这种方法获取更多图片

import 'dart:convert';

import 'dart:typed_data';



Uint8List bytesImage1;

bool bolWithImage1 = false;

try {

  bytesImage1 =

      base64Decode(base64StringFromSql);

  bolWithImage1 = true;

} catch (err) {}