【问题标题】:How can you store lists of Items in Flutter如何在 Flutter 中存储项目列表
【发布时间】:2021-07-15 05:26:36
【问题描述】:

即使应用程序在 Flutter 中关闭,你怎么能存储这样的东西:

Class myList {
    String id;
    List<Item> list;
}

Class Item{
    //Many property’s
}

我想也许我可以使用“sqflite”(一种颤振依赖项)来做到这一点,但我不知道如何将这个 List 存储在那里。你有什么想法吗?

顺便说一句:我需要多个“myList”实例。

【问题讨论】:

    标签: flutter sqflite


    【解决方案1】:

    您可以使用 sqflite、hive 或共享首选项来存储它。尝试将其保存在 flutter shared preferences 下。这是您可以使用的两种方法。

    使用共享偏好 1)首先创建一个共享偏好实例

    SharedPreferences prefs = await SharedPreferences.getInstance();
    

    然后保存相关的数据类型。这里需要放一个对象列表,所以添加列表并使用jsonEncode将其转换为String。

    Map<String,List<Item>> map={mylist.id: mylist.list};
    prefs.setString("itemList", json.encode(map));
    

    然后你可以像这样检索数据

    Map<String,List<Item>> map=json.decode(prefs.getString("itemList")).asMap();
    

    2)使用 Hive 首先创建hive数据库。你可以在这里输入任何名字

    var box = Hive.box('myBox');
    

    然后将对象添加到该数据库中

    var myList = myList()
    ..id = your id here
    ..list = add list here;
    
    var name = box.add(myList);
    

    您可以在任何地方获取此数据列表。

    print(box.getAt(0));
    

    【讨论】:

    • 人们有什么理由说“不要在共享偏好中存储大量数据”?我的意思是共享首选项的选项看起来更容易,但我必须存储大约 10 个这些列表,其中包含我的 3-6 个项目。这是共享偏好的问题吗?
    • 是的,在使用共享首选项时要考虑数据量。认为 Hive 是最好的解决方案。请参阅 pub.dev 中的文档以了解 hive。
    • 好的,这意味着您会说这些项目中的多达 60 个(它们都有 5 个 String 或 Int 属性)对于共享偏好来说太多了,或者至少 hive 会好得多?
    • 不会出错。在共享首选项中使用大量数据会给您带来一些性能问题。 Hive 会好很多。
    【解决方案2】:

    你可以试试hive 包。它是一个轻量级的本地存储通道,使用 hive 是一个好主意,因为它具有更好的读写基准。您可以搜索配置单元的教程。或者只是阅读文档。

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2021-04-12
      相关资源
      最近更新 更多