Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 省道/颤振-保存大量图像文件的正确方法_Sqlite_Dart_Flutter - Fatal编程技术网

Sqlite 省道/颤振-保存大量图像文件的正确方法

Sqlite 省道/颤振-保存大量图像文件的正确方法,sqlite,dart,flutter,Sqlite,Dart,Flutter,我即将开始开发一个类似百科全书的应用程序,我希望我的对象项目包含主图像以及用于画廊目的的其他图像列表 我已经做了一些关于如何在Flitter中存储图像的研究,但我感到困惑-一些回答的问题包括: 资产——但访问、筛选、搜索等都不容易 SQLite(Base64编码/解码)-加载和解码/编码图像对象列表期间的性能问题 将文件保留在磁盘上—加载时间更长 所以问题是,在这种情况下,什么是最好的方法 非常感谢您的任何提示/提示!:) 如果您将它们与应用程序一起静态发布,那么这些资产就可以很好地工作。过滤、

我即将开始开发一个类似百科全书的应用程序,我希望我的对象
项目
包含主图像以及用于画廊目的的其他图像列表

我已经做了一些关于如何在Flitter中存储图像的研究,但我感到困惑-一些回答的问题包括:

  • 资产——但访问、筛选、搜索等都不容易
  • SQLite(Base64编码/解码)-加载和解码/编码图像对象列表期间的性能问题
  • 将文件保留在磁盘上—加载时间更长
  • 所以问题是,在这种情况下,什么是最好的方法

    非常感谢您的任何提示/提示!:)

  • 如果您将它们与应用程序一起静态发布,那么这些资产就可以很好地工作。过滤、搜索等不应该太难

  • 是的,所有内容都将存储在一个文件中,这会导致一些性能问题

  • “将文件保存在磁盘上”以各种方式将文件保存在磁盘上,加载时间是不可避免的。当用户导航到应该显示图像的视图时,您可能能够在后台加载图像,以便将其存储在内存中

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

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


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

    尝试使用此方法获取更多图像

    import 'dart:convert';
    
    import 'dart:typed_data';
    
    
    
    Uint8List bytesImage1;
    
    bool bolWithImage1 = false;
    
    try {
    
      bytesImage1 =
    
          base64Decode(base64StringFromSql);
    
      bolWithImage1 = true;
    
    } catch (err) {}
    

    感谢你的(另一个)回复-非常感谢你对Dart/Flatter社区的贡献(我最近看到了很多你有用的帖子)!是的,这就是计划-它将是一个离线应用程序,所以没有任何变化。所以我将坚持使用assets/SQLite选项,比如:class Item{}谢谢:)选项,只需将它们作为资产发送即可。如果Dart查询功能足以降低添加数据库的复杂性,您也可以在Dart代码中硬编码元数据,而不是数据库。不,我会将它们存储在映射文字中,如
    const assets={'asset1':'assest\pic1.jpg***assets\pic2.jpg***assets\pic3.jpg',}
    ,或者如果您需要更多元数据,然后创建一个可以存储此元数据的类,并使用
    const-assets={'asset1':AssetMetadata(路径:'assest\pic1.jpg***assets\pic2.jpg***assets\pic3.jpg',size:size(240380),locale:'en',…},
    然后可以使用
    assets.where(…)
    获取类似SQL的资产。你说得对-键值将最有效。感谢你的时间和帮助!祝你愉快:)