Как вы можете хранить списки предметов в Flutter

#flutter #sqflite

Вопрос:

Как вы могли хранить что-то подобное, даже если приложение закрыто в трепете:

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

Class Item{
    //Many property’s
}
 

Я подумал, может быть, я мог бы сделать это с помощью «sqflite», зависимости от флаттера, но я понятия не имею, как я мог бы хранить там этот список<Элемент>. У тебя есть какие-нибудь идеи?

Кстати: Мне нужно несколько таких экземпляров «myList».

Ответ №1:

Вы можете сохранить его с помощью sqflite,hive или общих настроек.Попробуйте сохранить его в разделе общие настройки flutter. Это два метода, которые вы можете использовать.

Использование общих предпочтений 1)Сначала создайте экземпляр общих предпочтений

 SharedPreferences prefs = await SharedPreferences.getInstance();
 

Затем сохраните соответствующий тип данных.здесь вам нужно поместить список объектов, поэтому добавьте список и преобразуйте его в строку с помощью jsonEncode.

 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)Использование Улья
Сначала создайте базу данных улья.вы можете указать здесь любое имя

 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));
 

Комментарии:

1. Есть ли какая-то причина, по которой люди говорят: «не храните большие объемы данных в общих настройках»? Я имею в виду, что вариант с общими предпочтениями выглядит проще, но мне нужно сохранить, вероятно, почти 10 из этих списков, содержащих 3-6 моих элементов. Является ли это проблемой для общих предпочтений ?

2. да, учитывайте объем данных при использовании общих настроек. Думаю, Улей-лучшее решение. Смотрите документацию в pub.dev для hive.

3. Хорошо, это означает, что вы сказали бы, что до 60 из этих элементов (у которых у всех есть свойства 5 строк или Int) — это слишком много для общих предпочтений, или, по крайней мере, hive было бы намного лучше?

4. Это не ошибка получения. Использование большого объема данных в общих предпочтениях приводит к некоторым проблемам с производительностью. Улей был бы намного лучше.

Ответ №2:

Вы можете попробовать пакет hive. Это легкое локальное хранилище, и рекомендуется использовать hive, потому что в нем есть лучшие критерии для чтения и записи. Вы можете найти учебник для улья. или просто прочитайте документацию.